mirror of
https://github.com/adulau/aha.git
synced 2025-01-03 22:53:18 +00:00
Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6
This commit is contained in:
commit
20e673810c
93 changed files with 510 additions and 196 deletions
|
@ -92,7 +92,7 @@ implementations; in most cases the start() function should check for a
|
||||||
"past end of file" condition and return NULL if need be.
|
"past end of file" condition and return NULL if need be.
|
||||||
|
|
||||||
For more complicated applications, the private field of the seq_file
|
For more complicated applications, the private field of the seq_file
|
||||||
structure can be used. There is also a special value whch can be returned
|
structure can be used. There is also a special value which can be returned
|
||||||
by the start() function called SEQ_START_TOKEN; it can be used if you wish
|
by the start() function called SEQ_START_TOKEN; it can be used if you wish
|
||||||
to instruct your show() function (described below) to print a header at the
|
to instruct your show() function (described below) to print a header at the
|
||||||
top of the output. SEQ_START_TOKEN should only be used if the offset is
|
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:
|
||||||
This structure will be needed to tie our iterator to the /proc file in
|
This structure will be needed to tie our iterator to the /proc file in
|
||||||
a little bit.
|
a little bit.
|
||||||
|
|
||||||
It's worth noting that the interator value returned by start() and
|
It's worth noting that the iterator value returned by start() and
|
||||||
manipulated by the other functions is considered to be completely opaque by
|
manipulated by the other functions is considered to be completely opaque by
|
||||||
the seq_file code. It can thus be anything that is useful in stepping
|
the seq_file code. It can thus be anything that is useful in stepping
|
||||||
through the data to be output. Counters can be useful, but it could also be
|
through the data to be output. Counters can be useful, but it could also be
|
||||||
|
|
|
@ -281,10 +281,10 @@ solution for a couple of reasons:
|
||||||
sa_family_t can_family;
|
sa_family_t can_family;
|
||||||
int can_ifindex;
|
int can_ifindex;
|
||||||
union {
|
union {
|
||||||
struct { canid_t rx_id, tx_id; } tp16;
|
/* transport protocol class address info (e.g. ISOTP) */
|
||||||
struct { canid_t rx_id, tx_id; } tp20;
|
struct { canid_t rx_id, tx_id; } tp;
|
||||||
struct { canid_t rx_id, tx_id; } mcnet;
|
|
||||||
struct { canid_t rx_id, tx_id; } isotp;
|
/* reserved for future CAN protocols address information */
|
||||||
} can_addr;
|
} can_addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -88,10 +88,9 @@ hugepages from the buddy allocator, if the normal pool is exhausted. As
|
||||||
these surplus hugepages go out of use, they are freed back to the buddy
|
these surplus hugepages go out of use, they are freed back to the buddy
|
||||||
allocator.
|
allocator.
|
||||||
|
|
||||||
Caveat: Shrinking the pool via nr_hugepages while a surplus is in effect
|
Caveat: Shrinking the pool via nr_hugepages such that it becomes less
|
||||||
will allow the number of surplus huge pages to exceed the overcommit
|
than the number of hugepages in use will convert the balance to surplus
|
||||||
value, as the pool hugepages (which must have been in use for a surplus
|
huge pages even if it would exceed the overcommit value. As long as
|
||||||
hugepages to be allocated) will become surplus hugepages. As long as
|
|
||||||
this condition holds, however, no more surplus huge pages will be
|
this condition holds, however, no more surplus huge pages will be
|
||||||
allowed on the system until one of the two sysctls are increased
|
allowed on the system until one of the two sysctls are increased
|
||||||
sufficiently, or the surplus huge pages go out of use and are freed.
|
sufficiently, or the surplus huge pages go out of use and are freed.
|
||||||
|
|
14
MAINTAINERS
14
MAINTAINERS
|
@ -2116,7 +2116,7 @@ M: reinette.chatre@intel.com
|
||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
L: ipw3945-devel@lists.sourceforge.net
|
L: ipw3945-devel@lists.sourceforge.net
|
||||||
W: http://intellinuxwireless.org
|
W: http://intellinuxwireless.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rchatre/iwlwifi-2.6.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
IOC3 ETHERNET DRIVER
|
IOC3 ETHERNET DRIVER
|
||||||
|
@ -2197,7 +2197,7 @@ S: Maintained
|
||||||
ISDN SUBSYSTEM
|
ISDN SUBSYSTEM
|
||||||
P: Karsten Keil
|
P: Karsten Keil
|
||||||
M: kkeil@suse.de
|
M: kkeil@suse.de
|
||||||
L: isdn4linux@listserv.isdn4linux.de
|
L: isdn4linux@listserv.isdn4linux.de (subscribers-only)
|
||||||
W: http://www.isdn4linux.de
|
W: http://www.isdn4linux.de
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git
|
T: git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -2205,7 +2205,7 @@ S: Maintained
|
||||||
ISDN SUBSYSTEM (Eicon active card driver)
|
ISDN SUBSYSTEM (Eicon active card driver)
|
||||||
P: Armin Schindler
|
P: Armin Schindler
|
||||||
M: mac@melware.de
|
M: mac@melware.de
|
||||||
L: isdn4linux@listserv.isdn4linux.de
|
L: isdn4linux@listserv.isdn4linux.de (subscribers-only)
|
||||||
W: http://www.melware.de
|
W: http://www.melware.de
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
@ -3280,6 +3280,7 @@ L: linux-wireless@vger.kernel.org
|
||||||
L: rt2400-devel@lists.sourceforge.net
|
L: rt2400-devel@lists.sourceforge.net
|
||||||
W: http://rt2x00.serialmonkey.com/
|
W: http://rt2x00.serialmonkey.com/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/ivd/rt2x00.git
|
||||||
F: drivers/net/wireless/rt2x00/
|
F: drivers/net/wireless/rt2x00/
|
||||||
|
|
||||||
RAMDISK RAM BLOCK DEVICE DRIVER
|
RAMDISK RAM BLOCK DEVICE DRIVER
|
||||||
|
@ -3342,6 +3343,13 @@ L: reiserfs-devel@vger.kernel.org
|
||||||
W: http://www.namesys.com
|
W: http://www.namesys.com
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
|
RFKILL
|
||||||
|
P: Ivo van Doorn
|
||||||
|
M: IvDoorn@gmail.com
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: net/rfkill
|
||||||
|
|
||||||
ROCKETPORT DRIVER
|
ROCKETPORT DRIVER
|
||||||
P: Comtrol Corp.
|
P: Comtrol Corp.
|
||||||
W: http://www.comtrol.com
|
W: http://www.comtrol.com
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 25
|
SUBLEVEL = 25
|
||||||
EXTRAVERSION = -rc9
|
EXTRAVERSION =
|
||||||
NAME = Funky Weasel is Jiggy wit it
|
NAME = Funky Weasel is Jiggy wit it
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
|
@ -10,7 +10,6 @@ config AVR32
|
||||||
# With EMBEDDED=n, we get lots of stuff automatically selected
|
# With EMBEDDED=n, we get lots of stuff automatically selected
|
||||||
# that we usually don't need on AVR32.
|
# that we usually don't need on AVR32.
|
||||||
select EMBEDDED
|
select EMBEDDED
|
||||||
select HAVE_IDE
|
|
||||||
select HAVE_OPROFILE
|
select HAVE_OPROFILE
|
||||||
select HAVE_KPROBES
|
select HAVE_KPROBES
|
||||||
help
|
help
|
||||||
|
|
|
@ -362,7 +362,12 @@ pci_acpi_scan_root(struct acpi_device *device, int domain, int bus)
|
||||||
info.name = name;
|
info.name = name;
|
||||||
acpi_walk_resources(device->handle, METHOD_NAME__CRS, add_window,
|
acpi_walk_resources(device->handle, METHOD_NAME__CRS, add_window,
|
||||||
&info);
|
&info);
|
||||||
|
/*
|
||||||
|
* See arch/x86/pci/acpi.c.
|
||||||
|
* The desired pci bus might already be scanned in a quirk. We
|
||||||
|
* should handle the case here, but it appears that IA64 hasn't
|
||||||
|
* such quirk. So we just ignore the case now.
|
||||||
|
*/
|
||||||
pbus = pci_scan_bus_parented(NULL, bus, &pci_root_ops, controller);
|
pbus = pci_scan_bus_parented(NULL, bus, &pci_root_ops, controller);
|
||||||
if (pbus)
|
if (pbus)
|
||||||
pcibios_setup_root_windows(pbus, controller);
|
pcibios_setup_root_windows(pbus, controller);
|
||||||
|
|
|
@ -189,7 +189,7 @@ static struct resource au1200_lcd_resources[] = {
|
||||||
static struct resource au1200_ide0_resources[] = {
|
static struct resource au1200_ide0_resources[] = {
|
||||||
[0] = {
|
[0] = {
|
||||||
.start = AU1XXX_ATA_PHYS_ADDR,
|
.start = AU1XXX_ATA_PHYS_ADDR,
|
||||||
.end = AU1XXX_ATA_PHYS_ADDR + AU1XXX_ATA_PHYS_LEN,
|
.end = AU1XXX_ATA_PHYS_ADDR + AU1XXX_ATA_PHYS_LEN - 1,
|
||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
},
|
},
|
||||||
[1] = {
|
[1] = {
|
||||||
|
|
|
@ -534,7 +534,8 @@ insert_restart_trampoline(struct pt_regs *regs)
|
||||||
* Flushing one cacheline is cheap.
|
* Flushing one cacheline is cheap.
|
||||||
* "sync" on bigger (> 4 way) boxes is not.
|
* "sync" on bigger (> 4 way) boxes is not.
|
||||||
*/
|
*/
|
||||||
flush_icache_range(regs->gr[30], regs->gr[30] + 4);
|
flush_user_dcache_range(regs->gr[30], regs->gr[30] + 4);
|
||||||
|
flush_user_icache_range(regs->gr[30], regs->gr[30] + 4);
|
||||||
|
|
||||||
regs->gr[31] = regs->gr[30] + 8;
|
regs->gr[31] = regs->gr[30] + 8;
|
||||||
/* Preserve original r28. */
|
/* Preserve original r28. */
|
||||||
|
|
|
@ -219,8 +219,21 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int do
|
||||||
if (pxm >= 0)
|
if (pxm >= 0)
|
||||||
sd->node = pxm_to_node(pxm);
|
sd->node = pxm_to_node(pxm);
|
||||||
#endif
|
#endif
|
||||||
|
/*
|
||||||
|
* Maybe the desired pci bus has been already scanned. In such case
|
||||||
|
* it is unnecessary to scan the pci bus with the given domain,busnum.
|
||||||
|
*/
|
||||||
|
bus = pci_find_bus(domain, busnum);
|
||||||
|
if (bus) {
|
||||||
|
/*
|
||||||
|
* If the desired bus exits, the content of bus->sysdata will
|
||||||
|
* be replaced by sd.
|
||||||
|
*/
|
||||||
|
memcpy(bus->sysdata, sd, sizeof(*sd));
|
||||||
|
kfree(sd);
|
||||||
|
} else
|
||||||
bus = pci_scan_bus_parented(NULL, busnum, &pci_root_ops, sd);
|
bus = pci_scan_bus_parented(NULL, busnum, &pci_root_ops, sd);
|
||||||
|
|
||||||
if (!bus)
|
if (!bus)
|
||||||
kfree(sd);
|
kfree(sd);
|
||||||
|
|
||||||
|
@ -228,7 +241,7 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int do
|
||||||
if (bus != NULL) {
|
if (bus != NULL) {
|
||||||
if (pxm >= 0) {
|
if (pxm >= 0) {
|
||||||
printk("bus %d -> pxm %d -> node %d\n",
|
printk("bus %d -> pxm %d -> node %d\n",
|
||||||
busnum, pxm, sd->node);
|
busnum, pxm, pxm_to_node(pxm));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -38,7 +38,7 @@ config BLK_DEV_IO_TRACE
|
||||||
on a block device queue. For more information (and the user space
|
on a block device queue. For more information (and the user space
|
||||||
support tools needed), fetch the blktrace app from:
|
support tools needed), fetch the blktrace app from:
|
||||||
|
|
||||||
git://brick.kernel.dk/data/git/blktrace.git
|
git://git.kernel.dk/blktrace.git
|
||||||
|
|
||||||
config LSF
|
config LSF
|
||||||
bool "Support for Large Single Files"
|
bool "Support for Large Single Files"
|
||||||
|
|
|
@ -373,10 +373,11 @@ int acpi_bus_receive_event(struct acpi_bus_event *event)
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_lock_irqsave(&acpi_bus_event_lock, flags);
|
spin_lock_irqsave(&acpi_bus_event_lock, flags);
|
||||||
entry =
|
if (!list_empty(&acpi_bus_event_list)) {
|
||||||
list_entry(acpi_bus_event_list.next, struct acpi_bus_event, node);
|
entry = list_entry(acpi_bus_event_list.next,
|
||||||
if (entry)
|
struct acpi_bus_event, node);
|
||||||
list_del(&entry->node);
|
list_del(&entry->node);
|
||||||
|
}
|
||||||
spin_unlock_irqrestore(&acpi_bus_event_lock, flags);
|
spin_unlock_irqrestore(&acpi_bus_event_lock, flags);
|
||||||
|
|
||||||
if (!entry)
|
if (!entry)
|
||||||
|
|
|
@ -32,19 +32,12 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/ide.h>
|
#include <linux/ide.h>
|
||||||
#include <linux/sysdev.h>
|
#include <linux/scatterlist.h>
|
||||||
|
|
||||||
#include <linux/dma-mapping.h>
|
|
||||||
|
|
||||||
#include "ide-timing.h"
|
|
||||||
|
|
||||||
#include <asm/io.h>
|
|
||||||
#include <asm/mach-au1x00/au1xxx.h>
|
#include <asm/mach-au1x00/au1xxx.h>
|
||||||
#include <asm/mach-au1x00/au1xxx_dbdma.h>
|
#include <asm/mach-au1x00/au1xxx_dbdma.h>
|
||||||
|
|
||||||
#include <asm/mach-au1x00/au1xxx_ide.h>
|
#include <asm/mach-au1x00/au1xxx_ide.h>
|
||||||
|
|
||||||
#define DRV_NAME "au1200-ide"
|
#define DRV_NAME "au1200-ide"
|
||||||
|
@ -56,6 +49,8 @@
|
||||||
static _auide_hwif auide_hwif;
|
static _auide_hwif auide_hwif;
|
||||||
static int dbdma_init_done;
|
static int dbdma_init_done;
|
||||||
|
|
||||||
|
static int auide_ddma_init(_auide_hwif *auide);
|
||||||
|
|
||||||
#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA)
|
#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA)
|
||||||
|
|
||||||
void auide_insw(unsigned long port, void *addr, u32 count)
|
void auide_insw(unsigned long port, void *addr, u32 count)
|
||||||
|
@ -591,13 +586,14 @@ static int au_ide_probe(struct device *dev)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!request_mem_region (res->start, res->end-res->start, pdev->name)) {
|
if (!request_mem_region(res->start, res->end - res->start + 1,
|
||||||
|
pdev->name)) {
|
||||||
pr_debug("%s: request_mem_region failed\n", DRV_NAME);
|
pr_debug("%s: request_mem_region failed\n", DRV_NAME);
|
||||||
ret = -EBUSY;
|
ret = -EBUSY;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
ahwif->regbase = (u32)ioremap(res->start, res->end-res->start);
|
ahwif->regbase = (u32)ioremap(res->start, res->end - res->start + 1);
|
||||||
if (ahwif->regbase == 0) {
|
if (ahwif->regbase == 0) {
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -682,7 +678,7 @@ static int au_ide_remove(struct device *dev)
|
||||||
iounmap((void *)ahwif->regbase);
|
iounmap((void *)ahwif->regbase);
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
release_mem_region(res->start, res->end - res->start);
|
release_mem_region(res->start, res->end - res->start + 1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -667,7 +667,7 @@ static int __init it821x_ide_init(void)
|
||||||
module_init(it821x_ide_init);
|
module_init(it821x_ide_init);
|
||||||
|
|
||||||
module_param_named(noraid, it8212_noraid, int, S_IRUGO);
|
module_param_named(noraid, it8212_noraid, int, S_IRUGO);
|
||||||
MODULE_PARM_DESC(it8212_noraid, "Force card into bypass mode");
|
MODULE_PARM_DESC(noraid, "Force card into bypass mode");
|
||||||
|
|
||||||
MODULE_AUTHOR("Alan Cox");
|
MODULE_AUTHOR("Alan Cox");
|
||||||
MODULE_DESCRIPTION("PCI driver module for the ITE 821x");
|
MODULE_DESCRIPTION("PCI driver module for the ITE 821x");
|
||||||
|
|
|
@ -140,6 +140,7 @@ static struct platform_driver ams_delta_led_driver = {
|
||||||
.resume = ams_delta_led_resume,
|
.resume = ams_delta_led_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "ams-delta-led",
|
.name = "ams-delta-led",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -159,3 +160,4 @@ module_exit(ams_delta_led_exit);
|
||||||
MODULE_AUTHOR("Jonathan McDowell <noodles@earth.li>");
|
MODULE_AUTHOR("Jonathan McDowell <noodles@earth.li>");
|
||||||
MODULE_DESCRIPTION("Amstrad Delta LED driver");
|
MODULE_DESCRIPTION("Amstrad Delta LED driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:ams-delta-led");
|
||||||
|
|
|
@ -132,6 +132,9 @@ static int __exit pwmled_remove(struct platform_device *pdev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* work with hotplug and coldplug */
|
||||||
|
MODULE_ALIAS("platform:leds-atmel-pwm");
|
||||||
|
|
||||||
static struct platform_driver pwmled_driver = {
|
static struct platform_driver pwmled_driver = {
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "leds-atmel-pwm",
|
.name = "leds-atmel-pwm",
|
||||||
|
|
|
@ -170,6 +170,7 @@ static struct platform_driver clevo_mail_led_driver = {
|
||||||
.resume = clevo_mail_led_resume,
|
.resume = clevo_mail_led_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = KBUILD_MODNAME,
|
.name = KBUILD_MODNAME,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@ static struct platform_driver cmx270led_driver = {
|
||||||
#endif
|
#endif
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "cm-x270-led",
|
.name = "cm-x270-led",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -120,3 +121,4 @@ module_exit(cmx270led_exit);
|
||||||
MODULE_AUTHOR("Mike Rapoport <mike@compulab.co.il>");
|
MODULE_AUTHOR("Mike Rapoport <mike@compulab.co.il>");
|
||||||
MODULE_DESCRIPTION("CM-x270 LED driver");
|
MODULE_DESCRIPTION("CM-x270 LED driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:cm-x270-led");
|
||||||
|
|
|
@ -75,6 +75,9 @@ static int __devexit cobalt_qube_led_remove(struct platform_device *pdev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* work with hotplug and coldplug */
|
||||||
|
MODULE_ALIAS("platform:cobalt-qube-leds");
|
||||||
|
|
||||||
static struct platform_driver cobalt_qube_led_driver = {
|
static struct platform_driver cobalt_qube_led_driver = {
|
||||||
.probe = cobalt_qube_led_probe,
|
.probe = cobalt_qube_led_probe,
|
||||||
.remove = __devexit_p(cobalt_qube_led_remove),
|
.remove = __devexit_p(cobalt_qube_led_remove),
|
||||||
|
|
|
@ -99,6 +99,7 @@ static struct platform_driver corgiled_driver = {
|
||||||
#endif
|
#endif
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "corgi-led",
|
.name = "corgi-led",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -118,3 +119,4 @@ module_exit(corgiled_exit);
|
||||||
MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>");
|
MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>");
|
||||||
MODULE_DESCRIPTION("Corgi LED driver");
|
MODULE_DESCRIPTION("Corgi LED driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:corgi-led");
|
||||||
|
|
|
@ -199,3 +199,4 @@ module_exit(gpio_led_exit);
|
||||||
MODULE_AUTHOR("Raphael Assenat <raph@8d.com>");
|
MODULE_AUTHOR("Raphael Assenat <raph@8d.com>");
|
||||||
MODULE_DESCRIPTION("GPIO LED driver");
|
MODULE_DESCRIPTION("GPIO LED driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:leds-gpio");
|
||||||
|
|
|
@ -139,6 +139,7 @@ static int h1940leds_remove(struct platform_device *pdev)
|
||||||
static struct platform_driver h1940leds_driver = {
|
static struct platform_driver h1940leds_driver = {
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "h1940-leds",
|
.name = "h1940-leds",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
.probe = h1940leds_probe,
|
.probe = h1940leds_probe,
|
||||||
.remove = h1940leds_remove,
|
.remove = h1940leds_remove,
|
||||||
|
@ -161,3 +162,4 @@ module_exit(h1940leds_exit);
|
||||||
MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
|
MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
|
||||||
MODULE_DESCRIPTION("LED driver for the iPAQ H1940");
|
MODULE_DESCRIPTION("LED driver for the iPAQ H1940");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:h1940-leds");
|
||||||
|
|
|
@ -90,6 +90,9 @@ static int hp6xxled_remove(struct platform_device *pdev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* work with hotplug and coldplug */
|
||||||
|
MODULE_ALIAS("platform:hp6xx-led");
|
||||||
|
|
||||||
static struct platform_driver hp6xxled_driver = {
|
static struct platform_driver hp6xxled_driver = {
|
||||||
.probe = hp6xxled_probe,
|
.probe = hp6xxled_probe,
|
||||||
.remove = hp6xxled_remove,
|
.remove = hp6xxled_remove,
|
||||||
|
@ -99,6 +102,7 @@ static struct platform_driver hp6xxled_driver = {
|
||||||
#endif
|
#endif
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "hp6xx-led",
|
.name = "hp6xx-led",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -160,3 +160,4 @@ module_exit(s3c24xx_led_exit);
|
||||||
MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>");
|
MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>");
|
||||||
MODULE_DESCRIPTION("S3C24XX LED driver");
|
MODULE_DESCRIPTION("S3C24XX LED driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:s3c24xx_led");
|
||||||
|
|
|
@ -105,6 +105,7 @@ static struct platform_driver spitzled_driver = {
|
||||||
#endif
|
#endif
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "spitz-led",
|
.name = "spitz-led",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -124,3 +125,4 @@ module_exit(spitzled_exit);
|
||||||
MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>");
|
MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>");
|
||||||
MODULE_DESCRIPTION("Spitz LED driver");
|
MODULE_DESCRIPTION("Spitz LED driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:spitz-led");
|
||||||
|
|
|
@ -109,6 +109,7 @@ static struct platform_driver tosaled_driver = {
|
||||||
.resume = tosaled_resume,
|
.resume = tosaled_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "tosa-led",
|
.name = "tosa-led",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -128,3 +129,4 @@ module_exit(tosaled_exit);
|
||||||
MODULE_AUTHOR("Dirk Opfer <Dirk@Opfer-Online.de>");
|
MODULE_AUTHOR("Dirk Opfer <Dirk@Opfer-Online.de>");
|
||||||
MODULE_DESCRIPTION("Tosa LED driver");
|
MODULE_DESCRIPTION("Tosa LED driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:tosa-led");
|
||||||
|
|
|
@ -154,6 +154,7 @@ static struct platform_driver ssc_driver = {
|
||||||
.remove = __devexit_p(ssc_remove),
|
.remove = __devexit_p(ssc_remove),
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "ssc",
|
.name = "ssc",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -172,3 +173,4 @@ module_exit(ssc_exit);
|
||||||
MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>");
|
MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>");
|
||||||
MODULE_DESCRIPTION("SSC driver for Atmel AVR32 and AT91");
|
MODULE_DESCRIPTION("SSC driver for Atmel AVR32 and AT91");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:ssc");
|
||||||
|
|
|
@ -407,3 +407,4 @@ module_exit(pwm_exit);
|
||||||
|
|
||||||
MODULE_DESCRIPTION("Driver for AT32/AT91 PWM module");
|
MODULE_DESCRIPTION("Driver for AT32/AT91 PWM module");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:atmel_pwm");
|
||||||
|
|
|
@ -164,6 +164,7 @@ static struct platform_driver hdpu_cpustate_driver = {
|
||||||
.remove = hdpu_cpustate_remove,
|
.remove = hdpu_cpustate_remove,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = HDPU_CPUSTATE_NAME,
|
.name = HDPU_CPUSTATE_NAME,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -248,3 +249,4 @@ module_exit(cpustate_exit);
|
||||||
|
|
||||||
MODULE_AUTHOR("Brian Waite");
|
MODULE_AUTHOR("Brian Waite");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:" HDPU_CPUSTATE_NAME);
|
||||||
|
|
|
@ -55,6 +55,7 @@ static struct platform_driver hdpu_nexus_driver = {
|
||||||
.remove = hdpu_nexus_remove,
|
.remove = hdpu_nexus_remove,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = HDPU_NEXUS_NAME,
|
.name = HDPU_NEXUS_NAME,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -151,3 +152,4 @@ module_exit(nexus_exit);
|
||||||
|
|
||||||
MODULE_AUTHOR("Brian Waite");
|
MODULE_AUTHOR("Brian Waite");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:" HDPU_NEXUS_NAME);
|
||||||
|
|
|
@ -1075,3 +1075,4 @@ module_exit(at91_mci_exit);
|
||||||
MODULE_DESCRIPTION("AT91 Multimedia Card Interface driver");
|
MODULE_DESCRIPTION("AT91 Multimedia Card Interface driver");
|
||||||
MODULE_AUTHOR("Nick Randell");
|
MODULE_AUTHOR("Nick Randell");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:at91_mci");
|
||||||
|
|
|
@ -998,6 +998,7 @@ static struct platform_driver au1xmmc_driver = {
|
||||||
.resume = NULL,
|
.resume = NULL,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = DRIVER_NAME,
|
.name = DRIVER_NAME,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1018,5 +1019,6 @@ module_exit(au1xmmc_exit);
|
||||||
MODULE_AUTHOR("Advanced Micro Devices, Inc");
|
MODULE_AUTHOR("Advanced Micro Devices, Inc");
|
||||||
MODULE_DESCRIPTION("MMC/SD driver for the Alchemy Au1XXX");
|
MODULE_DESCRIPTION("MMC/SD driver for the Alchemy Au1XXX");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:au1xxx-mmc");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1128,6 +1128,7 @@ static struct platform_driver imxmci_driver = {
|
||||||
.resume = imxmci_resume,
|
.resume = imxmci_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = DRIVER_NAME,
|
.name = DRIVER_NAME,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1147,3 +1148,4 @@ module_exit(imxmci_exit);
|
||||||
MODULE_DESCRIPTION("i.MX Multimedia Card Interface Driver");
|
MODULE_DESCRIPTION("i.MX Multimedia Card Interface Driver");
|
||||||
MODULE_AUTHOR("Sascha Hauer, Pengutronix");
|
MODULE_AUTHOR("Sascha Hauer, Pengutronix");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:imx-mmc");
|
||||||
|
|
|
@ -1255,6 +1255,7 @@ static struct platform_driver mmc_omap_driver = {
|
||||||
.resume = mmc_omap_resume,
|
.resume = mmc_omap_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = DRIVER_NAME,
|
.name = DRIVER_NAME,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1273,5 +1274,5 @@ module_exit(mmc_omap_exit);
|
||||||
|
|
||||||
MODULE_DESCRIPTION("OMAP Multimedia Card driver");
|
MODULE_DESCRIPTION("OMAP Multimedia Card driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_ALIAS(DRIVER_NAME);
|
MODULE_ALIAS("platform:" DRIVER_NAME);
|
||||||
MODULE_AUTHOR("Juha Yrjölä");
|
MODULE_AUTHOR("Juha Yrjölä");
|
||||||
|
|
|
@ -693,6 +693,7 @@ static struct platform_driver pxamci_driver = {
|
||||||
.resume = pxamci_resume,
|
.resume = pxamci_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = DRIVER_NAME,
|
.name = DRIVER_NAME,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -711,3 +712,4 @@ module_exit(pxamci_exit);
|
||||||
|
|
||||||
MODULE_DESCRIPTION("PXA Multimedia Card Interface Driver");
|
MODULE_DESCRIPTION("PXA Multimedia Card Interface Driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:pxa2xx-mci");
|
||||||
|
|
|
@ -1948,6 +1948,7 @@ static struct platform_driver wbsd_driver = {
|
||||||
.resume = wbsd_platform_resume,
|
.resume = wbsd_platform_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = DRIVER_NAME,
|
.name = DRIVER_NAME,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -148,7 +148,7 @@ static inline void b44_sync_dma_desc_for_device(struct ssb_device *sdev,
|
||||||
unsigned long offset,
|
unsigned long offset,
|
||||||
enum dma_data_direction dir)
|
enum dma_data_direction dir)
|
||||||
{
|
{
|
||||||
dma_sync_single_range_for_device(sdev->dev, dma_base,
|
dma_sync_single_range_for_device(sdev->dma_dev, dma_base,
|
||||||
offset & dma_desc_align_mask,
|
offset & dma_desc_align_mask,
|
||||||
dma_desc_sync_size, dir);
|
dma_desc_sync_size, dir);
|
||||||
}
|
}
|
||||||
|
@ -158,7 +158,7 @@ static inline void b44_sync_dma_desc_for_cpu(struct ssb_device *sdev,
|
||||||
unsigned long offset,
|
unsigned long offset,
|
||||||
enum dma_data_direction dir)
|
enum dma_data_direction dir)
|
||||||
{
|
{
|
||||||
dma_sync_single_range_for_cpu(sdev->dev, dma_base,
|
dma_sync_single_range_for_cpu(sdev->dma_dev, dma_base,
|
||||||
offset & dma_desc_align_mask,
|
offset & dma_desc_align_mask,
|
||||||
dma_desc_sync_size, dir);
|
dma_desc_sync_size, dir);
|
||||||
}
|
}
|
||||||
|
@ -613,7 +613,7 @@ static void b44_tx(struct b44 *bp)
|
||||||
|
|
||||||
BUG_ON(skb == NULL);
|
BUG_ON(skb == NULL);
|
||||||
|
|
||||||
dma_unmap_single(bp->sdev->dev,
|
dma_unmap_single(bp->sdev->dma_dev,
|
||||||
rp->mapping,
|
rp->mapping,
|
||||||
skb->len,
|
skb->len,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
@ -653,7 +653,7 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
|
||||||
if (skb == NULL)
|
if (skb == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
mapping = dma_map_single(bp->sdev->dev, skb->data,
|
mapping = dma_map_single(bp->sdev->dma_dev, skb->data,
|
||||||
RX_PKT_BUF_SZ,
|
RX_PKT_BUF_SZ,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
|
|
||||||
|
@ -663,19 +663,19 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
|
||||||
mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) {
|
mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) {
|
||||||
/* Sigh... */
|
/* Sigh... */
|
||||||
if (!dma_mapping_error(mapping))
|
if (!dma_mapping_error(mapping))
|
||||||
dma_unmap_single(bp->sdev->dev, mapping,
|
dma_unmap_single(bp->sdev->dma_dev, mapping,
|
||||||
RX_PKT_BUF_SZ, DMA_FROM_DEVICE);
|
RX_PKT_BUF_SZ, DMA_FROM_DEVICE);
|
||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
skb = __netdev_alloc_skb(bp->dev, RX_PKT_BUF_SZ, GFP_ATOMIC|GFP_DMA);
|
skb = __netdev_alloc_skb(bp->dev, RX_PKT_BUF_SZ, GFP_ATOMIC|GFP_DMA);
|
||||||
if (skb == NULL)
|
if (skb == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
mapping = dma_map_single(bp->sdev->dev, skb->data,
|
mapping = dma_map_single(bp->sdev->dma_dev, skb->data,
|
||||||
RX_PKT_BUF_SZ,
|
RX_PKT_BUF_SZ,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
if (dma_mapping_error(mapping) ||
|
if (dma_mapping_error(mapping) ||
|
||||||
mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) {
|
mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) {
|
||||||
if (!dma_mapping_error(mapping))
|
if (!dma_mapping_error(mapping))
|
||||||
dma_unmap_single(bp->sdev->dev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE);
|
dma_unmap_single(bp->sdev->dma_dev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE);
|
||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
@ -750,7 +750,7 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
|
||||||
dest_idx * sizeof(dest_desc),
|
dest_idx * sizeof(dest_desc),
|
||||||
DMA_BIDIRECTIONAL);
|
DMA_BIDIRECTIONAL);
|
||||||
|
|
||||||
dma_sync_single_for_device(bp->sdev->dev, le32_to_cpu(src_desc->addr),
|
dma_sync_single_for_device(bp->sdev->dma_dev, le32_to_cpu(src_desc->addr),
|
||||||
RX_PKT_BUF_SZ,
|
RX_PKT_BUF_SZ,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
}
|
}
|
||||||
|
@ -772,7 +772,7 @@ static int b44_rx(struct b44 *bp, int budget)
|
||||||
struct rx_header *rh;
|
struct rx_header *rh;
|
||||||
u16 len;
|
u16 len;
|
||||||
|
|
||||||
dma_sync_single_for_cpu(bp->sdev->dev, map,
|
dma_sync_single_for_cpu(bp->sdev->dma_dev, map,
|
||||||
RX_PKT_BUF_SZ,
|
RX_PKT_BUF_SZ,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
rh = (struct rx_header *) skb->data;
|
rh = (struct rx_header *) skb->data;
|
||||||
|
@ -806,7 +806,7 @@ static int b44_rx(struct b44 *bp, int budget)
|
||||||
skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod);
|
skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod);
|
||||||
if (skb_size < 0)
|
if (skb_size < 0)
|
||||||
goto drop_it;
|
goto drop_it;
|
||||||
dma_unmap_single(bp->sdev->dev, map,
|
dma_unmap_single(bp->sdev->dma_dev, map,
|
||||||
skb_size, DMA_FROM_DEVICE);
|
skb_size, DMA_FROM_DEVICE);
|
||||||
/* Leave out rx_header */
|
/* Leave out rx_header */
|
||||||
skb_put(skb, len + RX_PKT_OFFSET);
|
skb_put(skb, len + RX_PKT_OFFSET);
|
||||||
|
@ -966,24 +966,24 @@ static int b44_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
mapping = dma_map_single(bp->sdev->dev, skb->data, len, DMA_TO_DEVICE);
|
mapping = dma_map_single(bp->sdev->dma_dev, skb->data, len, DMA_TO_DEVICE);
|
||||||
if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) {
|
if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) {
|
||||||
struct sk_buff *bounce_skb;
|
struct sk_buff *bounce_skb;
|
||||||
|
|
||||||
/* Chip can't handle DMA to/from >1GB, use bounce buffer */
|
/* Chip can't handle DMA to/from >1GB, use bounce buffer */
|
||||||
if (!dma_mapping_error(mapping))
|
if (!dma_mapping_error(mapping))
|
||||||
dma_unmap_single(bp->sdev->dev, mapping, len,
|
dma_unmap_single(bp->sdev->dma_dev, mapping, len,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
|
||||||
bounce_skb = __dev_alloc_skb(len, GFP_ATOMIC | GFP_DMA);
|
bounce_skb = __dev_alloc_skb(len, GFP_ATOMIC | GFP_DMA);
|
||||||
if (!bounce_skb)
|
if (!bounce_skb)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
|
|
||||||
mapping = dma_map_single(bp->sdev->dev, bounce_skb->data,
|
mapping = dma_map_single(bp->sdev->dma_dev, bounce_skb->data,
|
||||||
len, DMA_TO_DEVICE);
|
len, DMA_TO_DEVICE);
|
||||||
if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) {
|
if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) {
|
||||||
if (!dma_mapping_error(mapping))
|
if (!dma_mapping_error(mapping))
|
||||||
dma_unmap_single(bp->sdev->dev, mapping,
|
dma_unmap_single(bp->sdev->dma_dev, mapping,
|
||||||
len, DMA_TO_DEVICE);
|
len, DMA_TO_DEVICE);
|
||||||
dev_kfree_skb_any(bounce_skb);
|
dev_kfree_skb_any(bounce_skb);
|
||||||
goto err_out;
|
goto err_out;
|
||||||
|
@ -1082,7 +1082,7 @@ static void b44_free_rings(struct b44 *bp)
|
||||||
|
|
||||||
if (rp->skb == NULL)
|
if (rp->skb == NULL)
|
||||||
continue;
|
continue;
|
||||||
dma_unmap_single(bp->sdev->dev, rp->mapping, RX_PKT_BUF_SZ,
|
dma_unmap_single(bp->sdev->dma_dev, rp->mapping, RX_PKT_BUF_SZ,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
dev_kfree_skb_any(rp->skb);
|
dev_kfree_skb_any(rp->skb);
|
||||||
rp->skb = NULL;
|
rp->skb = NULL;
|
||||||
|
@ -1094,7 +1094,7 @@ static void b44_free_rings(struct b44 *bp)
|
||||||
|
|
||||||
if (rp->skb == NULL)
|
if (rp->skb == NULL)
|
||||||
continue;
|
continue;
|
||||||
dma_unmap_single(bp->sdev->dev, rp->mapping, rp->skb->len,
|
dma_unmap_single(bp->sdev->dma_dev, rp->mapping, rp->skb->len,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
dev_kfree_skb_any(rp->skb);
|
dev_kfree_skb_any(rp->skb);
|
||||||
rp->skb = NULL;
|
rp->skb = NULL;
|
||||||
|
@ -1117,12 +1117,12 @@ static void b44_init_rings(struct b44 *bp)
|
||||||
memset(bp->tx_ring, 0, B44_TX_RING_BYTES);
|
memset(bp->tx_ring, 0, B44_TX_RING_BYTES);
|
||||||
|
|
||||||
if (bp->flags & B44_FLAG_RX_RING_HACK)
|
if (bp->flags & B44_FLAG_RX_RING_HACK)
|
||||||
dma_sync_single_for_device(bp->sdev->dev, bp->rx_ring_dma,
|
dma_sync_single_for_device(bp->sdev->dma_dev, bp->rx_ring_dma,
|
||||||
DMA_TABLE_BYTES,
|
DMA_TABLE_BYTES,
|
||||||
DMA_BIDIRECTIONAL);
|
DMA_BIDIRECTIONAL);
|
||||||
|
|
||||||
if (bp->flags & B44_FLAG_TX_RING_HACK)
|
if (bp->flags & B44_FLAG_TX_RING_HACK)
|
||||||
dma_sync_single_for_device(bp->sdev->dev, bp->tx_ring_dma,
|
dma_sync_single_for_device(bp->sdev->dma_dev, bp->tx_ring_dma,
|
||||||
DMA_TABLE_BYTES,
|
DMA_TABLE_BYTES,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
|
||||||
|
@ -1144,24 +1144,24 @@ static void b44_free_consistent(struct b44 *bp)
|
||||||
bp->tx_buffers = NULL;
|
bp->tx_buffers = NULL;
|
||||||
if (bp->rx_ring) {
|
if (bp->rx_ring) {
|
||||||
if (bp->flags & B44_FLAG_RX_RING_HACK) {
|
if (bp->flags & B44_FLAG_RX_RING_HACK) {
|
||||||
dma_unmap_single(bp->sdev->dev, bp->rx_ring_dma,
|
dma_unmap_single(bp->sdev->dma_dev, bp->rx_ring_dma,
|
||||||
DMA_TABLE_BYTES,
|
DMA_TABLE_BYTES,
|
||||||
DMA_BIDIRECTIONAL);
|
DMA_BIDIRECTIONAL);
|
||||||
kfree(bp->rx_ring);
|
kfree(bp->rx_ring);
|
||||||
} else
|
} else
|
||||||
dma_free_coherent(bp->sdev->dev, DMA_TABLE_BYTES,
|
dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES,
|
||||||
bp->rx_ring, bp->rx_ring_dma);
|
bp->rx_ring, bp->rx_ring_dma);
|
||||||
bp->rx_ring = NULL;
|
bp->rx_ring = NULL;
|
||||||
bp->flags &= ~B44_FLAG_RX_RING_HACK;
|
bp->flags &= ~B44_FLAG_RX_RING_HACK;
|
||||||
}
|
}
|
||||||
if (bp->tx_ring) {
|
if (bp->tx_ring) {
|
||||||
if (bp->flags & B44_FLAG_TX_RING_HACK) {
|
if (bp->flags & B44_FLAG_TX_RING_HACK) {
|
||||||
dma_unmap_single(bp->sdev->dev, bp->tx_ring_dma,
|
dma_unmap_single(bp->sdev->dma_dev, bp->tx_ring_dma,
|
||||||
DMA_TABLE_BYTES,
|
DMA_TABLE_BYTES,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
kfree(bp->tx_ring);
|
kfree(bp->tx_ring);
|
||||||
} else
|
} else
|
||||||
dma_free_coherent(bp->sdev->dev, DMA_TABLE_BYTES,
|
dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES,
|
||||||
bp->tx_ring, bp->tx_ring_dma);
|
bp->tx_ring, bp->tx_ring_dma);
|
||||||
bp->tx_ring = NULL;
|
bp->tx_ring = NULL;
|
||||||
bp->flags &= ~B44_FLAG_TX_RING_HACK;
|
bp->flags &= ~B44_FLAG_TX_RING_HACK;
|
||||||
|
@ -1187,7 +1187,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
size = DMA_TABLE_BYTES;
|
size = DMA_TABLE_BYTES;
|
||||||
bp->rx_ring = dma_alloc_coherent(bp->sdev->dev, size, &bp->rx_ring_dma, gfp);
|
bp->rx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size, &bp->rx_ring_dma, gfp);
|
||||||
if (!bp->rx_ring) {
|
if (!bp->rx_ring) {
|
||||||
/* Allocation may have failed due to pci_alloc_consistent
|
/* Allocation may have failed due to pci_alloc_consistent
|
||||||
insisting on use of GFP_DMA, which is more restrictive
|
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)
|
||||||
if (!rx_ring)
|
if (!rx_ring)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
rx_ring_dma = dma_map_single(bp->sdev->dev, rx_ring,
|
rx_ring_dma = dma_map_single(bp->sdev->dma_dev, rx_ring,
|
||||||
DMA_TABLE_BYTES,
|
DMA_TABLE_BYTES,
|
||||||
DMA_BIDIRECTIONAL);
|
DMA_BIDIRECTIONAL);
|
||||||
|
|
||||||
|
@ -1214,7 +1214,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)
|
||||||
bp->flags |= B44_FLAG_RX_RING_HACK;
|
bp->flags |= B44_FLAG_RX_RING_HACK;
|
||||||
}
|
}
|
||||||
|
|
||||||
bp->tx_ring = dma_alloc_coherent(bp->sdev->dev, size, &bp->tx_ring_dma, gfp);
|
bp->tx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size, &bp->tx_ring_dma, gfp);
|
||||||
if (!bp->tx_ring) {
|
if (!bp->tx_ring) {
|
||||||
/* Allocation may have failed due to dma_alloc_coherent
|
/* Allocation may have failed due to dma_alloc_coherent
|
||||||
insisting on use of GFP_DMA, which is more restrictive
|
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)
|
||||||
if (!tx_ring)
|
if (!tx_ring)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
tx_ring_dma = dma_map_single(bp->sdev->dev, tx_ring,
|
tx_ring_dma = dma_map_single(bp->sdev->dma_dev, tx_ring,
|
||||||
DMA_TABLE_BYTES,
|
DMA_TABLE_BYTES,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
|
||||||
|
|
|
@ -730,7 +730,7 @@ static void write_msg(struct console *con, const char *msg, unsigned int len)
|
||||||
|
|
||||||
static struct console netconsole = {
|
static struct console netconsole = {
|
||||||
.name = "netcon",
|
.name = "netcon",
|
||||||
.flags = CON_ENABLED | CON_PRINTBUFFER,
|
.flags = CON_ENABLED,
|
||||||
.write = write_msg,
|
.write = write_msg,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -749,6 +749,9 @@ static int __init init_netconsole(void)
|
||||||
err = PTR_ERR(nt);
|
err = PTR_ERR(nt);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
/* Dump existing printks when we register */
|
||||||
|
netconsole.flags |= CON_PRINTBUFFER;
|
||||||
|
|
||||||
spin_lock_irqsave(&target_list_lock, flags);
|
spin_lock_irqsave(&target_list_lock, flags);
|
||||||
list_add(&nt->list, &target_list);
|
list_add(&nt->list, &target_list);
|
||||||
spin_unlock_irqrestore(&target_list_lock, flags);
|
spin_unlock_irqrestore(&target_list_lock, flags);
|
||||||
|
|
|
@ -512,13 +512,18 @@ static void gelic_wl_parse_ie(u8 *data, size_t len,
|
||||||
data, len);
|
data, len);
|
||||||
memset(ie_info, 0, sizeof(struct ie_info));
|
memset(ie_info, 0, sizeof(struct ie_info));
|
||||||
|
|
||||||
while (0 < data_left) {
|
while (2 <= data_left) {
|
||||||
item_id = *pos++;
|
item_id = *pos++;
|
||||||
item_len = *pos++;
|
item_len = *pos++;
|
||||||
|
data_left -= 2;
|
||||||
|
|
||||||
|
if (data_left < item_len)
|
||||||
|
break;
|
||||||
|
|
||||||
switch (item_id) {
|
switch (item_id) {
|
||||||
case MFIE_TYPE_GENERIC:
|
case MFIE_TYPE_GENERIC:
|
||||||
if (!memcmp(pos, wpa_oui, OUI_LEN) &&
|
if ((OUI_LEN + 1 <= item_len) &&
|
||||||
|
!memcmp(pos, wpa_oui, OUI_LEN) &&
|
||||||
pos[OUI_LEN] == 0x01) {
|
pos[OUI_LEN] == 0x01) {
|
||||||
ie_info->wpa.data = pos - 2;
|
ie_info->wpa.data = pos - 2;
|
||||||
ie_info->wpa.len = item_len + 2;
|
ie_info->wpa.len = item_len + 2;
|
||||||
|
@ -535,7 +540,7 @@ static void gelic_wl_parse_ie(u8 *data, size_t len,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
pos += item_len;
|
pos += item_len;
|
||||||
data_left -= item_len + 2;
|
data_left -= item_len;
|
||||||
}
|
}
|
||||||
pr_debug("%s: wpa=%p,%d wpa2=%p,%d\n", __func__,
|
pr_debug("%s: wpa=%p,%d wpa2=%p,%d\n", __func__,
|
||||||
ie_info->wpa.data, ie_info->wpa.len,
|
ie_info->wpa.data, ie_info->wpa.len,
|
||||||
|
|
|
@ -373,10 +373,10 @@ static inline
|
||||||
dma_addr_t dmaaddr;
|
dma_addr_t dmaaddr;
|
||||||
|
|
||||||
if (tx) {
|
if (tx) {
|
||||||
dmaaddr = dma_map_single(ring->dev->dev->dev,
|
dmaaddr = dma_map_single(ring->dev->dev->dma_dev,
|
||||||
buf, len, DMA_TO_DEVICE);
|
buf, len, DMA_TO_DEVICE);
|
||||||
} else {
|
} else {
|
||||||
dmaaddr = dma_map_single(ring->dev->dev->dev,
|
dmaaddr = dma_map_single(ring->dev->dev->dma_dev,
|
||||||
buf, len, DMA_FROM_DEVICE);
|
buf, len, DMA_FROM_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -388,9 +388,10 @@ static inline
|
||||||
dma_addr_t addr, size_t len, int tx)
|
dma_addr_t addr, size_t len, int tx)
|
||||||
{
|
{
|
||||||
if (tx) {
|
if (tx) {
|
||||||
dma_unmap_single(ring->dev->dev->dev, addr, len, DMA_TO_DEVICE);
|
dma_unmap_single(ring->dev->dev->dma_dev,
|
||||||
|
addr, len, DMA_TO_DEVICE);
|
||||||
} else {
|
} else {
|
||||||
dma_unmap_single(ring->dev->dev->dev,
|
dma_unmap_single(ring->dev->dev->dma_dev,
|
||||||
addr, len, DMA_FROM_DEVICE);
|
addr, len, DMA_FROM_DEVICE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -400,7 +401,7 @@ static inline
|
||||||
dma_addr_t addr, size_t len)
|
dma_addr_t addr, size_t len)
|
||||||
{
|
{
|
||||||
B43_WARN_ON(ring->tx);
|
B43_WARN_ON(ring->tx);
|
||||||
dma_sync_single_for_cpu(ring->dev->dev->dev,
|
dma_sync_single_for_cpu(ring->dev->dev->dma_dev,
|
||||||
addr, len, DMA_FROM_DEVICE);
|
addr, len, DMA_FROM_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,7 +410,7 @@ static inline
|
||||||
dma_addr_t addr, size_t len)
|
dma_addr_t addr, size_t len)
|
||||||
{
|
{
|
||||||
B43_WARN_ON(ring->tx);
|
B43_WARN_ON(ring->tx);
|
||||||
dma_sync_single_for_device(ring->dev->dev->dev,
|
dma_sync_single_for_device(ring->dev->dev->dma_dev,
|
||||||
addr, len, DMA_FROM_DEVICE);
|
addr, len, DMA_FROM_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -425,7 +426,7 @@ static inline
|
||||||
|
|
||||||
static int alloc_ringmemory(struct b43_dmaring *ring)
|
static int alloc_ringmemory(struct b43_dmaring *ring)
|
||||||
{
|
{
|
||||||
struct device *dev = ring->dev->dev->dev;
|
struct device *dma_dev = ring->dev->dev->dma_dev;
|
||||||
gfp_t flags = GFP_KERNEL;
|
gfp_t flags = GFP_KERNEL;
|
||||||
|
|
||||||
/* The specs call for 4K buffers for 30- and 32-bit DMA with 4K
|
/* 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)
|
||||||
*/
|
*/
|
||||||
if (ring->type == B43_DMA_64BIT)
|
if (ring->type == B43_DMA_64BIT)
|
||||||
flags |= GFP_DMA;
|
flags |= GFP_DMA;
|
||||||
ring->descbase = dma_alloc_coherent(dev, B43_DMA_RINGMEMSIZE,
|
ring->descbase = dma_alloc_coherent(dma_dev, B43_DMA_RINGMEMSIZE,
|
||||||
&(ring->dmabase), flags);
|
&(ring->dmabase), flags);
|
||||||
if (!ring->descbase) {
|
if (!ring->descbase) {
|
||||||
b43err(ring->dev->wl, "DMA ringmemory allocation failed\n");
|
b43err(ring->dev->wl, "DMA ringmemory allocation failed\n");
|
||||||
|
@ -452,9 +453,9 @@ static int alloc_ringmemory(struct b43_dmaring *ring)
|
||||||
|
|
||||||
static void free_ringmemory(struct b43_dmaring *ring)
|
static void free_ringmemory(struct b43_dmaring *ring)
|
||||||
{
|
{
|
||||||
struct device *dev = ring->dev->dev->dev;
|
struct device *dma_dev = ring->dev->dev->dma_dev;
|
||||||
|
|
||||||
dma_free_coherent(dev, B43_DMA_RINGMEMSIZE,
|
dma_free_coherent(dma_dev, B43_DMA_RINGMEMSIZE,
|
||||||
ring->descbase, ring->dmabase);
|
ring->descbase, ring->dmabase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -854,7 +855,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
|
||||||
goto err_kfree_meta;
|
goto err_kfree_meta;
|
||||||
|
|
||||||
/* test for ability to dma to txhdr_cache */
|
/* test for ability to dma to txhdr_cache */
|
||||||
dma_test = dma_map_single(dev->dev->dev,
|
dma_test = dma_map_single(dev->dev->dma_dev,
|
||||||
ring->txhdr_cache,
|
ring->txhdr_cache,
|
||||||
b43_txhdr_size(dev),
|
b43_txhdr_size(dev),
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
@ -869,7 +870,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
|
||||||
if (!ring->txhdr_cache)
|
if (!ring->txhdr_cache)
|
||||||
goto err_kfree_meta;
|
goto err_kfree_meta;
|
||||||
|
|
||||||
dma_test = dma_map_single(dev->dev->dev,
|
dma_test = dma_map_single(dev->dev->dma_dev,
|
||||||
ring->txhdr_cache,
|
ring->txhdr_cache,
|
||||||
b43_txhdr_size(dev),
|
b43_txhdr_size(dev),
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
@ -883,7 +884,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dma_unmap_single(dev->dev->dev,
|
dma_unmap_single(dev->dev->dma_dev,
|
||||||
dma_test, b43_txhdr_size(dev),
|
dma_test, b43_txhdr_size(dev),
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -393,11 +393,11 @@ dma_addr_t map_descbuffer(struct b43legacy_dmaring *ring,
|
||||||
dma_addr_t dmaaddr;
|
dma_addr_t dmaaddr;
|
||||||
|
|
||||||
if (tx)
|
if (tx)
|
||||||
dmaaddr = dma_map_single(ring->dev->dev->dev,
|
dmaaddr = dma_map_single(ring->dev->dev->dma_dev,
|
||||||
buf, len,
|
buf, len,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
else
|
else
|
||||||
dmaaddr = dma_map_single(ring->dev->dev->dev,
|
dmaaddr = dma_map_single(ring->dev->dev->dma_dev,
|
||||||
buf, len,
|
buf, len,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
|
|
||||||
|
@ -411,11 +411,11 @@ void unmap_descbuffer(struct b43legacy_dmaring *ring,
|
||||||
int tx)
|
int tx)
|
||||||
{
|
{
|
||||||
if (tx)
|
if (tx)
|
||||||
dma_unmap_single(ring->dev->dev->dev,
|
dma_unmap_single(ring->dev->dev->dma_dev,
|
||||||
addr, len,
|
addr, len,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
else
|
else
|
||||||
dma_unmap_single(ring->dev->dev->dev,
|
dma_unmap_single(ring->dev->dev->dma_dev,
|
||||||
addr, len,
|
addr, len,
|
||||||
DMA_FROM_DEVICE);
|
DMA_FROM_DEVICE);
|
||||||
}
|
}
|
||||||
|
@ -427,7 +427,7 @@ void sync_descbuffer_for_cpu(struct b43legacy_dmaring *ring,
|
||||||
{
|
{
|
||||||
B43legacy_WARN_ON(ring->tx);
|
B43legacy_WARN_ON(ring->tx);
|
||||||
|
|
||||||
dma_sync_single_for_cpu(ring->dev->dev->dev,
|
dma_sync_single_for_cpu(ring->dev->dev->dma_dev,
|
||||||
addr, len, DMA_FROM_DEVICE);
|
addr, len, DMA_FROM_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -438,7 +438,7 @@ void sync_descbuffer_for_device(struct b43legacy_dmaring *ring,
|
||||||
{
|
{
|
||||||
B43legacy_WARN_ON(ring->tx);
|
B43legacy_WARN_ON(ring->tx);
|
||||||
|
|
||||||
dma_sync_single_for_device(ring->dev->dev->dev,
|
dma_sync_single_for_device(ring->dev->dev->dma_dev,
|
||||||
addr, len, DMA_FROM_DEVICE);
|
addr, len, DMA_FROM_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,9 +458,9 @@ void free_descriptor_buffer(struct b43legacy_dmaring *ring,
|
||||||
|
|
||||||
static int alloc_ringmemory(struct b43legacy_dmaring *ring)
|
static int alloc_ringmemory(struct b43legacy_dmaring *ring)
|
||||||
{
|
{
|
||||||
struct device *dev = ring->dev->dev->dev;
|
struct device *dma_dev = ring->dev->dev->dma_dev;
|
||||||
|
|
||||||
ring->descbase = dma_alloc_coherent(dev, B43legacy_DMA_RINGMEMSIZE,
|
ring->descbase = dma_alloc_coherent(dma_dev, B43legacy_DMA_RINGMEMSIZE,
|
||||||
&(ring->dmabase), GFP_KERNEL);
|
&(ring->dmabase), GFP_KERNEL);
|
||||||
if (!ring->descbase) {
|
if (!ring->descbase) {
|
||||||
b43legacyerr(ring->dev->wl, "DMA ringmemory allocation"
|
b43legacyerr(ring->dev->wl, "DMA ringmemory allocation"
|
||||||
|
@ -474,9 +474,9 @@ static int alloc_ringmemory(struct b43legacy_dmaring *ring)
|
||||||
|
|
||||||
static void free_ringmemory(struct b43legacy_dmaring *ring)
|
static void free_ringmemory(struct b43legacy_dmaring *ring)
|
||||||
{
|
{
|
||||||
struct device *dev = ring->dev->dev->dev;
|
struct device *dma_dev = ring->dev->dev->dma_dev;
|
||||||
|
|
||||||
dma_free_coherent(dev, B43legacy_DMA_RINGMEMSIZE,
|
dma_free_coherent(dma_dev, B43legacy_DMA_RINGMEMSIZE,
|
||||||
ring->descbase, ring->dmabase);
|
ring->descbase, ring->dmabase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -586,7 +586,8 @@ static int b43legacy_dmacontroller_tx_reset(struct b43legacy_wldev *dev,
|
||||||
/* Check if a DMA mapping address is invalid. */
|
/* Check if a DMA mapping address is invalid. */
|
||||||
static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring,
|
static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring,
|
||||||
dma_addr_t addr,
|
dma_addr_t addr,
|
||||||
size_t buffersize)
|
size_t buffersize,
|
||||||
|
bool dma_to_device)
|
||||||
{
|
{
|
||||||
if (unlikely(dma_mapping_error(addr)))
|
if (unlikely(dma_mapping_error(addr)))
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -594,11 +595,11 @@ static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring,
|
||||||
switch (ring->type) {
|
switch (ring->type) {
|
||||||
case B43legacy_DMA_30BIT:
|
case B43legacy_DMA_30BIT:
|
||||||
if ((u64)addr + buffersize > (1ULL << 30))
|
if ((u64)addr + buffersize > (1ULL << 30))
|
||||||
return 1;
|
goto address_error;
|
||||||
break;
|
break;
|
||||||
case B43legacy_DMA_32BIT:
|
case B43legacy_DMA_32BIT:
|
||||||
if ((u64)addr + buffersize > (1ULL << 32))
|
if ((u64)addr + buffersize > (1ULL << 32))
|
||||||
return 1;
|
goto address_error;
|
||||||
break;
|
break;
|
||||||
case B43legacy_DMA_64BIT:
|
case B43legacy_DMA_64BIT:
|
||||||
/* Currently we can't have addresses beyond 64 bits in the kernel. */
|
/* 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,
|
||||||
|
|
||||||
/* The address is OK. */
|
/* The address is OK. */
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
address_error:
|
||||||
|
/* We can't support this address. Unmap it again. */
|
||||||
|
unmap_descbuffer(ring, addr, buffersize, dma_to_device);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int setup_rx_descbuffer(struct b43legacy_dmaring *ring,
|
static int setup_rx_descbuffer(struct b43legacy_dmaring *ring,
|
||||||
|
@ -626,7 +633,7 @@ static int setup_rx_descbuffer(struct b43legacy_dmaring *ring,
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
dmaaddr = map_descbuffer(ring, skb->data,
|
dmaaddr = map_descbuffer(ring, skb->data,
|
||||||
ring->rx_buffersize, 0);
|
ring->rx_buffersize, 0);
|
||||||
if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize)) {
|
if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) {
|
||||||
/* ugh. try to realloc in zone_dma */
|
/* ugh. try to realloc in zone_dma */
|
||||||
gfp_flags |= GFP_DMA;
|
gfp_flags |= GFP_DMA;
|
||||||
|
|
||||||
|
@ -639,7 +646,7 @@ static int setup_rx_descbuffer(struct b43legacy_dmaring *ring,
|
||||||
ring->rx_buffersize, 0);
|
ring->rx_buffersize, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize)) {
|
if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) {
|
||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
@ -886,12 +893,12 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev,
|
||||||
goto err_kfree_meta;
|
goto err_kfree_meta;
|
||||||
|
|
||||||
/* test for ability to dma to txhdr_cache */
|
/* test for ability to dma to txhdr_cache */
|
||||||
dma_test = dma_map_single(dev->dev->dev, ring->txhdr_cache,
|
dma_test = dma_map_single(dev->dev->dma_dev, ring->txhdr_cache,
|
||||||
sizeof(struct b43legacy_txhdr_fw3),
|
sizeof(struct b43legacy_txhdr_fw3),
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
|
||||||
if (b43legacy_dma_mapping_error(ring, dma_test,
|
if (b43legacy_dma_mapping_error(ring, dma_test,
|
||||||
sizeof(struct b43legacy_txhdr_fw3))) {
|
sizeof(struct b43legacy_txhdr_fw3), 1)) {
|
||||||
/* ugh realloc */
|
/* ugh realloc */
|
||||||
kfree(ring->txhdr_cache);
|
kfree(ring->txhdr_cache);
|
||||||
ring->txhdr_cache = kcalloc(nr_slots,
|
ring->txhdr_cache = kcalloc(nr_slots,
|
||||||
|
@ -900,17 +907,17 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev,
|
||||||
if (!ring->txhdr_cache)
|
if (!ring->txhdr_cache)
|
||||||
goto err_kfree_meta;
|
goto err_kfree_meta;
|
||||||
|
|
||||||
dma_test = dma_map_single(dev->dev->dev,
|
dma_test = dma_map_single(dev->dev->dma_dev,
|
||||||
ring->txhdr_cache,
|
ring->txhdr_cache,
|
||||||
sizeof(struct b43legacy_txhdr_fw3),
|
sizeof(struct b43legacy_txhdr_fw3),
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
|
||||||
if (b43legacy_dma_mapping_error(ring, dma_test,
|
if (b43legacy_dma_mapping_error(ring, dma_test,
|
||||||
sizeof(struct b43legacy_txhdr_fw3)))
|
sizeof(struct b43legacy_txhdr_fw3), 1))
|
||||||
goto err_kfree_txhdr_cache;
|
goto err_kfree_txhdr_cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
dma_unmap_single(dev->dev->dev,
|
dma_unmap_single(dev->dev->dma_dev,
|
||||||
dma_test, sizeof(struct b43legacy_txhdr_fw3),
|
dma_test, sizeof(struct b43legacy_txhdr_fw3),
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
}
|
}
|
||||||
|
@ -1235,7 +1242,7 @@ static int dma_tx_fragment(struct b43legacy_dmaring *ring,
|
||||||
meta_hdr->dmaaddr = map_descbuffer(ring, (unsigned char *)header,
|
meta_hdr->dmaaddr = map_descbuffer(ring, (unsigned char *)header,
|
||||||
sizeof(struct b43legacy_txhdr_fw3), 1);
|
sizeof(struct b43legacy_txhdr_fw3), 1);
|
||||||
if (b43legacy_dma_mapping_error(ring, meta_hdr->dmaaddr,
|
if (b43legacy_dma_mapping_error(ring, meta_hdr->dmaaddr,
|
||||||
sizeof(struct b43legacy_txhdr_fw3))) {
|
sizeof(struct b43legacy_txhdr_fw3), 1)) {
|
||||||
ring->current_slot = old_top_slot;
|
ring->current_slot = old_top_slot;
|
||||||
ring->used_slots = old_used_slots;
|
ring->used_slots = old_used_slots;
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
@ -1254,7 +1261,7 @@ static int dma_tx_fragment(struct b43legacy_dmaring *ring,
|
||||||
|
|
||||||
meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1);
|
meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1);
|
||||||
/* create a bounce buffer in zone_dma on mapping failure. */
|
/* create a bounce buffer in zone_dma on mapping failure. */
|
||||||
if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len)) {
|
if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) {
|
||||||
bounce_skb = __dev_alloc_skb(skb->len, GFP_ATOMIC | GFP_DMA);
|
bounce_skb = __dev_alloc_skb(skb->len, GFP_ATOMIC | GFP_DMA);
|
||||||
if (!bounce_skb) {
|
if (!bounce_skb) {
|
||||||
ring->current_slot = old_top_slot;
|
ring->current_slot = old_top_slot;
|
||||||
|
@ -1268,7 +1275,7 @@ static int dma_tx_fragment(struct b43legacy_dmaring *ring,
|
||||||
skb = bounce_skb;
|
skb = bounce_skb;
|
||||||
meta->skb = skb;
|
meta->skb = skb;
|
||||||
meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1);
|
meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1);
|
||||||
if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len)) {
|
if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) {
|
||||||
ring->current_slot = old_top_slot;
|
ring->current_slot = old_top_slot;
|
||||||
ring->used_slots = old_used_slots;
|
ring->used_slots = old_used_slots;
|
||||||
err = -EIO;
|
err = -EIO;
|
||||||
|
|
|
@ -1488,6 +1488,7 @@ static int b43legacy_request_firmware(struct b43legacy_wldev *dev)
|
||||||
}
|
}
|
||||||
if (!fw->initvals) {
|
if (!fw->initvals) {
|
||||||
switch (dev->phy.type) {
|
switch (dev->phy.type) {
|
||||||
|
case B43legacy_PHYTYPE_B:
|
||||||
case B43legacy_PHYTYPE_G:
|
case B43legacy_PHYTYPE_G:
|
||||||
if ((rev >= 5) && (rev <= 10))
|
if ((rev >= 5) && (rev <= 10))
|
||||||
filename = "b0g0initvals5";
|
filename = "b0g0initvals5";
|
||||||
|
@ -1505,6 +1506,7 @@ static int b43legacy_request_firmware(struct b43legacy_wldev *dev)
|
||||||
}
|
}
|
||||||
if (!fw->initvals_band) {
|
if (!fw->initvals_band) {
|
||||||
switch (dev->phy.type) {
|
switch (dev->phy.type) {
|
||||||
|
case B43legacy_PHYTYPE_B:
|
||||||
case B43legacy_PHYTYPE_G:
|
case B43legacy_PHYTYPE_G:
|
||||||
if ((rev >= 5) && (rev <= 10))
|
if ((rev >= 5) && (rev <= 10))
|
||||||
filename = "b0g0bsinitvals5";
|
filename = "b0g0bsinitvals5";
|
||||||
|
|
|
@ -509,6 +509,8 @@ static int rtl8187_add_interface(struct ieee80211_hw *dev,
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
priv->vif = conf->vif;
|
||||||
|
|
||||||
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG);
|
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG);
|
||||||
for (i = 0; i < ETH_ALEN; i++)
|
for (i = 0; i < ETH_ALEN; i++)
|
||||||
rtl818x_iowrite8(priv, &priv->map->MAC[i],
|
rtl818x_iowrite8(priv, &priv->map->MAC[i],
|
||||||
|
@ -523,6 +525,7 @@ static void rtl8187_remove_interface(struct ieee80211_hw *dev,
|
||||||
{
|
{
|
||||||
struct rtl8187_priv *priv = dev->priv;
|
struct rtl8187_priv *priv = dev->priv;
|
||||||
priv->mode = IEEE80211_IF_TYPE_MNTR;
|
priv->mode = IEEE80211_IF_TYPE_MNTR;
|
||||||
|
priv->vif = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rtl8187_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf)
|
static int rtl8187_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf)
|
||||||
|
|
|
@ -419,3 +419,4 @@ module_exit(at91_cf_exit);
|
||||||
MODULE_DESCRIPTION("AT91 Compact Flash Driver");
|
MODULE_DESCRIPTION("AT91 Compact Flash Driver");
|
||||||
MODULE_AUTHOR("David Brownell");
|
MODULE_AUTHOR("David Brownell");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:at91_cf");
|
||||||
|
|
|
@ -344,6 +344,7 @@ static int omap_cf_resume(struct platform_device *pdev)
|
||||||
static struct platform_driver omap_cf_driver = {
|
static struct platform_driver omap_cf_driver = {
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = (char *) driver_name,
|
.name = (char *) driver_name,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
.remove = __exit_p(omap_cf_remove),
|
.remove = __exit_p(omap_cf_remove),
|
||||||
.suspend = omap_cf_suspend,
|
.suspend = omap_cf_suspend,
|
||||||
|
@ -368,3 +369,4 @@ module_exit(omap_cf_exit);
|
||||||
|
|
||||||
MODULE_DESCRIPTION("OMAP CF Driver");
|
MODULE_DESCRIPTION("OMAP CF Driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:omap_cf");
|
||||||
|
|
|
@ -239,6 +239,7 @@ static struct platform_driver pxa2xx_pcmcia_driver = {
|
||||||
.resume = pxa2xx_drv_pcmcia_resume,
|
.resume = pxa2xx_drv_pcmcia_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "pxa2xx-pcmcia",
|
.name = "pxa2xx-pcmcia",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -258,3 +259,4 @@ module_exit(pxa2xx_pcmcia_exit);
|
||||||
MODULE_AUTHOR("Stefan Eletzhofer <stefan.eletzhofer@inquant.de> and Ian Molton <spyro@f2s.com>");
|
MODULE_AUTHOR("Stefan Eletzhofer <stefan.eletzhofer@inquant.de> and Ian Molton <spyro@f2s.com>");
|
||||||
MODULE_DESCRIPTION("Linux PCMCIA Card Services: PXA2xx core socket driver");
|
MODULE_DESCRIPTION("Linux PCMCIA Card Services: PXA2xx core socket driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:pxa2xx-pcmcia");
|
||||||
|
|
|
@ -198,9 +198,8 @@ static int cmos_set_alarm(struct device *dev, struct rtc_wkalrm *t)
|
||||||
|
|
||||||
/* Writing 0xff means "don't care" or "match all". */
|
/* Writing 0xff means "don't care" or "match all". */
|
||||||
|
|
||||||
mon = t->time.tm_mon;
|
mon = t->time.tm_mon + 1;
|
||||||
mon = (mon < 12) ? BIN2BCD(mon) : 0xff;
|
mon = (mon <= 12) ? BIN2BCD(mon) : 0xff;
|
||||||
mon++;
|
|
||||||
|
|
||||||
mday = t->time.tm_mday;
|
mday = t->time.tm_mday;
|
||||||
mday = (mday >= 1 && mday <= 31) ? BIN2BCD(mday) : 0xff;
|
mday = (mday >= 1 && mday <= 31) ? BIN2BCD(mday) : 0xff;
|
||||||
|
|
|
@ -1577,3 +1577,4 @@ module_exit(atmel_serial_exit);
|
||||||
MODULE_AUTHOR("Rick Bronson");
|
MODULE_AUTHOR("Rick Bronson");
|
||||||
MODULE_DESCRIPTION("Atmel AT91 / AT32 serial port driver");
|
MODULE_DESCRIPTION("Atmel AT91 / AT32 serial port driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:atmel_usart");
|
||||||
|
|
|
@ -1243,6 +1243,7 @@ static struct platform_driver bfin_serial_driver = {
|
||||||
.resume = bfin_serial_resume,
|
.resume = bfin_serial_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "bfin-uart",
|
.name = "bfin-uart",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1301,3 +1302,4 @@ MODULE_AUTHOR("Aubrey.Li <aubrey.li@analog.com>");
|
||||||
MODULE_DESCRIPTION("Blackfin generic serial port driver");
|
MODULE_DESCRIPTION("Blackfin generic serial port driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_ALIAS_CHARDEV_MAJOR(BFIN_SERIAL_MAJOR);
|
MODULE_ALIAS_CHARDEV_MAJOR(BFIN_SERIAL_MAJOR);
|
||||||
|
MODULE_ALIAS("platform:bfin-uart");
|
||||||
|
|
|
@ -1090,6 +1090,7 @@ static struct platform_driver serial_imx_driver = {
|
||||||
.resume = serial_imx_resume,
|
.resume = serial_imx_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "imx-uart",
|
.name = "imx-uart",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1124,3 +1125,4 @@ module_exit(imx_serial_exit);
|
||||||
MODULE_AUTHOR("Sascha Hauer");
|
MODULE_AUTHOR("Sascha Hauer");
|
||||||
MODULE_DESCRIPTION("IMX generic serial port driver");
|
MODULE_DESCRIPTION("IMX generic serial port driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:imx-uart");
|
||||||
|
|
|
@ -649,5 +649,6 @@ module_exit(mcf_exit);
|
||||||
MODULE_AUTHOR("Greg Ungerer <gerg@snapgear.com>");
|
MODULE_AUTHOR("Greg Ungerer <gerg@snapgear.com>");
|
||||||
MODULE_DESCRIPTION("Freescale ColdFire UART driver");
|
MODULE_DESCRIPTION("Freescale ColdFire UART driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:mcfuart");
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
|
@ -1188,6 +1188,8 @@ mpc52xx_uart_resume(struct platform_device *dev)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* work with hotplug and coldplug */
|
||||||
|
MODULE_ALIAS("platform:mpc52xx-psc");
|
||||||
|
|
||||||
static struct platform_driver mpc52xx_uart_platform_driver = {
|
static struct platform_driver mpc52xx_uart_platform_driver = {
|
||||||
.probe = mpc52xx_uart_probe,
|
.probe = mpc52xx_uart_probe,
|
||||||
|
|
|
@ -1964,6 +1964,7 @@ static struct platform_driver mpsc_driver = {
|
||||||
.remove = mpsc_drv_remove,
|
.remove = mpsc_drv_remove,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = MPSC_CTLR_NAME,
|
.name = MPSC_CTLR_NAME,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2007,3 +2008,4 @@ MODULE_DESCRIPTION("Generic Marvell MPSC serial/UART driver $Revision: 1.00 $");
|
||||||
MODULE_VERSION(MPSC_VERSION);
|
MODULE_VERSION(MPSC_VERSION);
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_ALIAS_CHARDEV_MAJOR(MPSC_MAJOR);
|
MODULE_ALIAS_CHARDEV_MAJOR(MPSC_MAJOR);
|
||||||
|
MODULE_ALIAS("platform:" MPSC_CTLR_NAME);
|
||||||
|
|
|
@ -713,6 +713,7 @@ static struct platform_driver serial_netx_driver = {
|
||||||
|
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = DRIVER_NAME,
|
.name = DRIVER_NAME,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -745,3 +746,4 @@ module_exit(netx_serial_exit);
|
||||||
MODULE_AUTHOR("Sascha Hauer");
|
MODULE_AUTHOR("Sascha Hauer");
|
||||||
MODULE_DESCRIPTION("NetX serial port driver");
|
MODULE_DESCRIPTION("NetX serial port driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:" DRIVER_NAME);
|
||||||
|
|
|
@ -850,3 +850,4 @@ MODULE_AUTHOR("Embedded Alley Solutions, Inc.");
|
||||||
MODULE_DESCRIPTION("PNX8XXX SoCs serial port driver");
|
MODULE_DESCRIPTION("PNX8XXX SoCs serial port driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_PNX8XXX_MAJOR);
|
MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_PNX8XXX_MAJOR);
|
||||||
|
MODULE_ALIAS("platform:pnx8xxx-uart");
|
||||||
|
|
|
@ -833,6 +833,7 @@ static struct platform_driver serial_pxa_driver = {
|
||||||
.resume = serial_pxa_resume,
|
.resume = serial_pxa_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "pxa2xx-uart",
|
.name = "pxa2xx-uart",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -861,4 +862,4 @@ module_init(serial_pxa_init);
|
||||||
module_exit(serial_pxa_exit);
|
module_exit(serial_pxa_exit);
|
||||||
|
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:pxa2xx-uart");
|
||||||
|
|
|
@ -1935,3 +1935,7 @@ console_initcall(s3c24xx_serial_initconsole);
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>");
|
MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>");
|
||||||
MODULE_DESCRIPTION("Samsung S3C2410/S3C2440/S3C2412 Serial port driver");
|
MODULE_DESCRIPTION("Samsung S3C2410/S3C2440/S3C2412 Serial port driver");
|
||||||
|
MODULE_ALIAS("platform:s3c2400-uart");
|
||||||
|
MODULE_ALIAS("platform:s3c2410-uart");
|
||||||
|
MODULE_ALIAS("platform:s3c2412-uart");
|
||||||
|
MODULE_ALIAS("platform:s3c2440-uart");
|
||||||
|
|
|
@ -884,6 +884,7 @@ static struct platform_driver sa11x0_serial_driver = {
|
||||||
.resume = sa1100_serial_resume,
|
.resume = sa1100_serial_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "sa11x0-uart",
|
.name = "sa11x0-uart",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -917,3 +918,4 @@ MODULE_AUTHOR("Deep Blue Solutions Ltd");
|
||||||
MODULE_DESCRIPTION("SA1100 generic serial port driver $Revision: 1.50 $");
|
MODULE_DESCRIPTION("SA1100 generic serial port driver $Revision: 1.50 $");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_SA1100_MAJOR);
|
MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_SA1100_MAJOR);
|
||||||
|
MODULE_ALIAS("platform:sa11x0-uart");
|
||||||
|
|
|
@ -732,6 +732,7 @@ static struct platform_driver sc26xx_driver = {
|
||||||
.remove = __devexit_p(sc26xx_driver_remove),
|
.remove = __devexit_p(sc26xx_driver_remove),
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "SC26xx",
|
.name = "SC26xx",
|
||||||
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -753,3 +754,4 @@ MODULE_AUTHOR("Thomas Bogendörfer");
|
||||||
MODULE_DESCRIPTION("SC681/SC2692 serial driver");
|
MODULE_DESCRIPTION("SC681/SC2692 serial driver");
|
||||||
MODULE_VERSION("1.0");
|
MODULE_VERSION("1.0");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:SC26xx");
|
||||||
|
|
|
@ -1552,3 +1552,4 @@ module_init(sci_init);
|
||||||
module_exit(sci_exit);
|
module_exit(sci_exit);
|
||||||
|
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:sh-sci");
|
||||||
|
|
|
@ -561,6 +561,9 @@ static int __devexit ulite_remove(struct platform_device *pdev)
|
||||||
return ulite_release(&pdev->dev);
|
return ulite_release(&pdev->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* work with hotplug and coldplug */
|
||||||
|
MODULE_ALIAS("platform:uartlite");
|
||||||
|
|
||||||
static struct platform_driver ulite_platform_driver = {
|
static struct platform_driver ulite_platform_driver = {
|
||||||
.probe = ulite_probe,
|
.probe = ulite_probe,
|
||||||
.remove = __devexit_p(ulite_remove),
|
.remove = __devexit_p(ulite_remove),
|
||||||
|
|
|
@ -960,3 +960,6 @@ static void __exit vr41xx_siu_exit(void)
|
||||||
|
|
||||||
module_init(vr41xx_siu_init);
|
module_init(vr41xx_siu_init);
|
||||||
module_exit(vr41xx_siu_exit);
|
module_exit(vr41xx_siu_exit);
|
||||||
|
|
||||||
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_ALIAS("platform:SIU");
|
||||||
|
|
|
@ -192,8 +192,11 @@ static int s3c24xx_spi_txrx(struct spi_device *spi, struct spi_transfer *t)
|
||||||
hw->len = t->len;
|
hw->len = t->len;
|
||||||
hw->count = 0;
|
hw->count = 0;
|
||||||
|
|
||||||
|
init_completion(&hw->done);
|
||||||
|
|
||||||
/* send the first byte */
|
/* send the first byte */
|
||||||
writeb(hw_txbyte(hw, 0), hw->regs + S3C2410_SPTDAT);
|
writeb(hw_txbyte(hw, 0), hw->regs + S3C2410_SPTDAT);
|
||||||
|
|
||||||
wait_for_completion(&hw->done);
|
wait_for_completion(&hw->done);
|
||||||
|
|
||||||
return hw->count;
|
return hw->count;
|
||||||
|
@ -235,6 +238,7 @@ static irqreturn_t s3c24xx_spi_irq(int irq, void *dev)
|
||||||
|
|
||||||
static int __init s3c24xx_spi_probe(struct platform_device *pdev)
|
static int __init s3c24xx_spi_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
|
struct s3c2410_spi_info *pdata;
|
||||||
struct s3c24xx_spi *hw;
|
struct s3c24xx_spi *hw;
|
||||||
struct spi_master *master;
|
struct spi_master *master;
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
|
@ -251,10 +255,10 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev)
|
||||||
memset(hw, 0, sizeof(struct s3c24xx_spi));
|
memset(hw, 0, sizeof(struct s3c24xx_spi));
|
||||||
|
|
||||||
hw->master = spi_master_get(master);
|
hw->master = spi_master_get(master);
|
||||||
hw->pdata = pdev->dev.platform_data;
|
hw->pdata = pdata = pdev->dev.platform_data;
|
||||||
hw->dev = &pdev->dev;
|
hw->dev = &pdev->dev;
|
||||||
|
|
||||||
if (hw->pdata == NULL) {
|
if (pdata == NULL) {
|
||||||
dev_err(&pdev->dev, "No platform data supplied\n");
|
dev_err(&pdev->dev, "No platform data supplied\n");
|
||||||
err = -ENOENT;
|
err = -ENOENT;
|
||||||
goto err_no_pdata;
|
goto err_no_pdata;
|
||||||
|
@ -263,6 +267,10 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev)
|
||||||
platform_set_drvdata(pdev, hw);
|
platform_set_drvdata(pdev, hw);
|
||||||
init_completion(&hw->done);
|
init_completion(&hw->done);
|
||||||
|
|
||||||
|
/* setup the master state. */
|
||||||
|
|
||||||
|
master->num_chipselect = hw->pdata->num_cs;
|
||||||
|
|
||||||
/* setup the state for the bitbang driver */
|
/* setup the state for the bitbang driver */
|
||||||
|
|
||||||
hw->bitbang.master = hw->master;
|
hw->bitbang.master = hw->master;
|
||||||
|
@ -330,13 +338,13 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
/* setup any gpio we can */
|
/* setup any gpio we can */
|
||||||
|
|
||||||
if (!hw->pdata->set_cs) {
|
if (!pdata->set_cs) {
|
||||||
hw->set_cs = s3c24xx_spi_gpiocs;
|
hw->set_cs = s3c24xx_spi_gpiocs;
|
||||||
|
|
||||||
s3c2410_gpio_setpin(hw->pdata->pin_cs, 1);
|
s3c2410_gpio_setpin(pdata->pin_cs, 1);
|
||||||
s3c2410_gpio_cfgpin(hw->pdata->pin_cs, S3C2410_GPIO_OUTPUT);
|
s3c2410_gpio_cfgpin(pdata->pin_cs, S3C2410_GPIO_OUTPUT);
|
||||||
} else
|
} else
|
||||||
hw->set_cs = hw->pdata->set_cs;
|
hw->set_cs = pdata->set_cs;
|
||||||
|
|
||||||
/* register our spi controller */
|
/* register our spi controller */
|
||||||
|
|
||||||
|
|
|
@ -436,15 +436,18 @@ static int ssb_devices_register(struct ssb_bus *bus)
|
||||||
#ifdef CONFIG_SSB_PCIHOST
|
#ifdef CONFIG_SSB_PCIHOST
|
||||||
sdev->irq = bus->host_pci->irq;
|
sdev->irq = bus->host_pci->irq;
|
||||||
dev->parent = &bus->host_pci->dev;
|
dev->parent = &bus->host_pci->dev;
|
||||||
|
sdev->dma_dev = &bus->host_pci->dev;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case SSB_BUSTYPE_PCMCIA:
|
case SSB_BUSTYPE_PCMCIA:
|
||||||
#ifdef CONFIG_SSB_PCMCIAHOST
|
#ifdef CONFIG_SSB_PCMCIAHOST
|
||||||
sdev->irq = bus->host_pcmcia->irq.AssignedIRQ;
|
sdev->irq = bus->host_pcmcia->irq.AssignedIRQ;
|
||||||
dev->parent = &bus->host_pcmcia->dev;
|
dev->parent = &bus->host_pcmcia->dev;
|
||||||
|
sdev->dma_dev = &bus->host_pcmcia->dev;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case SSB_BUSTYPE_SSB:
|
case SSB_BUSTYPE_SSB:
|
||||||
|
sdev->dma_dev = dev;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1018,15 +1021,14 @@ EXPORT_SYMBOL(ssb_dma_translation);
|
||||||
|
|
||||||
int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask)
|
int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask)
|
||||||
{
|
{
|
||||||
struct device *dev = ssb_dev->dev;
|
struct device *dma_dev = ssb_dev->dma_dev;
|
||||||
|
|
||||||
#ifdef CONFIG_SSB_PCIHOST
|
#ifdef CONFIG_SSB_PCIHOST
|
||||||
if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI &&
|
if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI)
|
||||||
!dma_supported(dev, mask))
|
return dma_set_mask(dma_dev, mask);
|
||||||
return -EIO;
|
|
||||||
#endif
|
#endif
|
||||||
dev->coherent_dma_mask = mask;
|
dma_dev->coherent_dma_mask = mask;
|
||||||
dev->dma_mask = &dev->coherent_dma_mask;
|
dma_dev->dma_mask = &dma_dev->coherent_dma_mask;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,6 +196,10 @@ static struct device_attribute trip_point_attrs[] = {
|
||||||
__ATTR(trip_point_8_temp, 0444, trip_point_temp_show, NULL),
|
__ATTR(trip_point_8_temp, 0444, trip_point_temp_show, NULL),
|
||||||
__ATTR(trip_point_9_type, 0444, trip_point_type_show, NULL),
|
__ATTR(trip_point_9_type, 0444, trip_point_type_show, NULL),
|
||||||
__ATTR(trip_point_9_temp, 0444, trip_point_temp_show, NULL),
|
__ATTR(trip_point_9_temp, 0444, trip_point_temp_show, NULL),
|
||||||
|
__ATTR(trip_point_10_type, 0444, trip_point_type_show, NULL),
|
||||||
|
__ATTR(trip_point_10_temp, 0444, trip_point_temp_show, NULL),
|
||||||
|
__ATTR(trip_point_11_type, 0444, trip_point_type_show, NULL),
|
||||||
|
__ATTR(trip_point_11_temp, 0444, trip_point_temp_show, NULL),
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TRIP_POINT_ATTR_ADD(_dev, _index, result) \
|
#define TRIP_POINT_ATTR_ADD(_dev, _index, result) \
|
||||||
|
|
|
@ -109,6 +109,22 @@ static int option_send_setup(struct usb_serial_port *port);
|
||||||
#define HUAWEI_PRODUCT_E600 0x1001
|
#define HUAWEI_PRODUCT_E600 0x1001
|
||||||
#define HUAWEI_PRODUCT_E220 0x1003
|
#define HUAWEI_PRODUCT_E220 0x1003
|
||||||
#define HUAWEI_PRODUCT_E220BIS 0x1004
|
#define HUAWEI_PRODUCT_E220BIS 0x1004
|
||||||
|
#define HUAWEI_PRODUCT_E1401 0x1401
|
||||||
|
#define HUAWEI_PRODUCT_E1403 0x1403
|
||||||
|
#define HUAWEI_PRODUCT_E1405 0x1405
|
||||||
|
#define HUAWEI_PRODUCT_E1406 0x1406
|
||||||
|
#define HUAWEI_PRODUCT_E1408 0x1408
|
||||||
|
#define HUAWEI_PRODUCT_E1409 0x1409
|
||||||
|
#define HUAWEI_PRODUCT_E1410 0x1410
|
||||||
|
#define HUAWEI_PRODUCT_E1411 0x1411
|
||||||
|
#define HUAWEI_PRODUCT_E1412 0x1412
|
||||||
|
#define HUAWEI_PRODUCT_E1413 0x1413
|
||||||
|
#define HUAWEI_PRODUCT_E1414 0x1414
|
||||||
|
#define HUAWEI_PRODUCT_E1415 0x1415
|
||||||
|
#define HUAWEI_PRODUCT_E1416 0x1416
|
||||||
|
#define HUAWEI_PRODUCT_E1417 0x1417
|
||||||
|
#define HUAWEI_PRODUCT_E1418 0x1418
|
||||||
|
#define HUAWEI_PRODUCT_E1419 0x1419
|
||||||
|
|
||||||
#define NOVATELWIRELESS_VENDOR_ID 0x1410
|
#define NOVATELWIRELESS_VENDOR_ID 0x1410
|
||||||
|
|
||||||
|
@ -129,6 +145,7 @@ static int option_send_setup(struct usb_serial_port *port);
|
||||||
#define NOVATELWIRELESS_PRODUCT_EV620 0x2100
|
#define NOVATELWIRELESS_PRODUCT_EV620 0x2100
|
||||||
#define NOVATELWIRELESS_PRODUCT_ES720 0x2110
|
#define NOVATELWIRELESS_PRODUCT_ES720 0x2110
|
||||||
#define NOVATELWIRELESS_PRODUCT_E725 0x2120
|
#define NOVATELWIRELESS_PRODUCT_E725 0x2120
|
||||||
|
#define NOVATELWIRELESS_PRODUCT_ES620 0x2130
|
||||||
#define NOVATELWIRELESS_PRODUCT_EU730 0x2400
|
#define NOVATELWIRELESS_PRODUCT_EU730 0x2400
|
||||||
#define NOVATELWIRELESS_PRODUCT_EU740 0x2410
|
#define NOVATELWIRELESS_PRODUCT_EU740 0x2410
|
||||||
#define NOVATELWIRELESS_PRODUCT_EU870D 0x2420
|
#define NOVATELWIRELESS_PRODUCT_EU870D 0x2420
|
||||||
|
@ -137,6 +154,8 @@ static int option_send_setup(struct usb_serial_port *port);
|
||||||
#define NOVATELWIRELESS_PRODUCT_MC727 0x4100
|
#define NOVATELWIRELESS_PRODUCT_MC727 0x4100
|
||||||
#define NOVATELWIRELESS_PRODUCT_MC950D 0x4400
|
#define NOVATELWIRELESS_PRODUCT_MC950D 0x4400
|
||||||
|
|
||||||
|
#define NOVATELWIRELESS_PRODUCT_U727 0x5010
|
||||||
|
|
||||||
/* FUTURE NOVATEL PRODUCTS */
|
/* FUTURE NOVATEL PRODUCTS */
|
||||||
#define NOVATELWIRELESS_PRODUCT_EVDO_1 0x6000
|
#define NOVATELWIRELESS_PRODUCT_EVDO_1 0x6000
|
||||||
#define NOVATELWIRELESS_PRODUCT_HSPA_1 0x7000
|
#define NOVATELWIRELESS_PRODUCT_HSPA_1 0x7000
|
||||||
|
@ -147,6 +166,12 @@ static int option_send_setup(struct usb_serial_port *port);
|
||||||
#define NOVATELWIRELESS_PRODUCT_EMBEDDED_2 0x8001
|
#define NOVATELWIRELESS_PRODUCT_EMBEDDED_2 0x8001
|
||||||
#define NOVATELWIRELESS_PRODUCT_GLOBAL_2 0x9001
|
#define NOVATELWIRELESS_PRODUCT_GLOBAL_2 0x9001
|
||||||
|
|
||||||
|
/* AMOI PRODUCTS */
|
||||||
|
#define AMOI_VENDOR_ID 0x1614
|
||||||
|
#define AMOI_PRODUCT_H01 0x0800
|
||||||
|
#define AMOI_PRODUCT_H01A 0x7002
|
||||||
|
#define AMOI_PRODUCT_H02 0x0802
|
||||||
|
|
||||||
#define DELL_VENDOR_ID 0x413C
|
#define DELL_VENDOR_ID 0x413C
|
||||||
|
|
||||||
#define KYOCERA_VENDOR_ID 0x0c88
|
#define KYOCERA_VENDOR_ID 0x0c88
|
||||||
|
@ -163,8 +188,13 @@ static int option_send_setup(struct usb_serial_port *port);
|
||||||
#define BANDRICH_PRODUCT_C100_1 0x1002
|
#define BANDRICH_PRODUCT_C100_1 0x1002
|
||||||
#define BANDRICH_PRODUCT_C100_2 0x1003
|
#define BANDRICH_PRODUCT_C100_2 0x1003
|
||||||
|
|
||||||
|
#define AMOI_VENDOR_ID 0x1614
|
||||||
|
#define AMOI_PRODUCT_9508 0x0800
|
||||||
|
|
||||||
#define QUALCOMM_VENDOR_ID 0x05C6
|
#define QUALCOMM_VENDOR_ID 0x05C6
|
||||||
|
|
||||||
|
#define MAXON_VENDOR_ID 0x16d8
|
||||||
|
|
||||||
static struct usb_device_id option_ids[] = {
|
static struct usb_device_id option_ids[] = {
|
||||||
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
|
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
|
||||||
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
|
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
|
||||||
|
@ -204,6 +234,23 @@ static struct usb_device_id option_ids[] = {
|
||||||
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) },
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) },
|
||||||
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) },
|
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) },
|
||||||
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) },
|
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418) },
|
||||||
|
{ USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419) },
|
||||||
|
{ USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) },
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V740) }, /* Novatel Merlin EX720/V740/X720 */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V740) }, /* Novatel Merlin EX720/V740/X720 */
|
||||||
|
@ -216,13 +263,13 @@ static struct usb_device_id option_ids[] = {
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EV620) }, /* Novatel EV620/ES620 CDMA/EV-DO */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EV620) }, /* Novatel EV620/ES620 CDMA/EV-DO */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_ES720) }, /* Novatel ES620/ES720/U720/USB720 */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_ES720) }, /* Novatel ES620/ES720/U720/USB720 */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_E725) }, /* Novatel E725/E726 */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_E725) }, /* Novatel E725/E726 */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2130) }, /* Novatel Merlin ES620 SM Bus */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_ES620) }, /* Novatel Merlin ES620 SM Bus */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU730) }, /* Novatel EU730 and Vodafone EU740 */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU730) }, /* Novatel EU730 and Vodafone EU740 */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU740) }, /* Novatel non-Vodafone EU740 */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU740) }, /* Novatel non-Vodafone EU740 */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x5010) }, /* Novatel U727 */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_U727) }, /* Novatel U727 */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_1) }, /* Novatel EVDO product */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_1) }, /* Novatel EVDO product */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_1) }, /* Novatel HSPA product */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_1) }, /* Novatel HSPA product */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_1) }, /* Novatel Embedded product */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_1) }, /* Novatel Embedded product */
|
||||||
|
@ -232,6 +279,10 @@ static struct usb_device_id option_ids[] = {
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_2) }, /* Novatel Embedded product */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_2) }, /* Novatel Embedded product */
|
||||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_2) }, /* Novatel Global product */
|
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_2) }, /* Novatel Global product */
|
||||||
|
|
||||||
|
{ USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) },
|
||||||
|
{ USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) },
|
||||||
|
{ USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H02) },
|
||||||
|
|
||||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
|
{ USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
|
||||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
|
{ USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
|
||||||
{ USB_DEVICE(DELL_VENDOR_ID, 0x8116) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
|
{ 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[] = {
|
||||||
{ USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
|
{ USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
|
||||||
{ USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
|
{ USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
|
||||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
|
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
|
||||||
|
{ USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
|
||||||
{ } /* Terminating entry */
|
{ } /* Terminating entry */
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(usb, option_ids);
|
MODULE_DEVICE_TABLE(usb, option_ids);
|
||||||
|
|
|
@ -854,6 +854,7 @@ int usb_serial_probe(struct usb_interface *interface,
|
||||||
serial->num_interrupt_in = num_interrupt_in;
|
serial->num_interrupt_in = num_interrupt_in;
|
||||||
serial->num_interrupt_out = num_interrupt_out;
|
serial->num_interrupt_out = num_interrupt_out;
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* check that the device meets the driver's requirements */
|
/* check that the device meets the driver's requirements */
|
||||||
if ((type->num_interrupt_in != NUM_DONT_CARE &&
|
if ((type->num_interrupt_in != NUM_DONT_CARE &&
|
||||||
type->num_interrupt_in != num_interrupt_in)
|
type->num_interrupt_in != num_interrupt_in)
|
||||||
|
@ -867,6 +868,7 @@ int usb_serial_probe(struct usb_interface *interface,
|
||||||
kfree(serial);
|
kfree(serial);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* found all that we need */
|
/* found all that we need */
|
||||||
dev_info(&interface->dev, "%s converter detected\n",
|
dev_info(&interface->dev, "%s converter detected\n",
|
||||||
|
|
|
@ -1530,16 +1530,104 @@ UNUSUAL_DEV( 0x1210, 0x0003, 0x0100, 0x0100,
|
||||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||||
US_FL_IGNORE_RESIDUE ),
|
US_FL_IGNORE_RESIDUE ),
|
||||||
|
|
||||||
/* Reported by fangxiaozhi <fangxiaozhi60675@huawei.com>
|
/* Reported by fangxiaozhi <huananhu@huawei.com>
|
||||||
* and by linlei <linlei83@huawei.com>
|
* This brings the HUAWEI data card devices into multi-port mode
|
||||||
* Patch reworked by Johann Wilhelm <johann.wilhelm@student.tugraz.at>
|
|
||||||
* This brings the HUAWEI E220 devices into multi-port mode
|
|
||||||
*/
|
*/
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1001, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000,
|
UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000,
|
||||||
"HUAWEI MOBILE",
|
"HUAWEI MOBILE",
|
||||||
"Mass Storage",
|
"Mass Storage",
|
||||||
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
0),
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1004, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1401, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1403, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1405, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1406, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1408, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1409, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1410, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1411, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1412, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1413, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1414, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1415, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1416, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1417, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1418, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
UNUSUAL_DEV( 0x12d1, 0x1419, 0x0000, 0x0000,
|
||||||
|
"HUAWEI MOBILE",
|
||||||
|
"Mass Storage",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init,
|
||||||
|
0),
|
||||||
|
|
||||||
/* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */
|
/* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */
|
||||||
UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001,
|
UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001,
|
||||||
|
|
|
@ -1521,6 +1521,7 @@ module_init(fbmem_init);
|
||||||
static void __exit
|
static void __exit
|
||||||
fbmem_exit(void)
|
fbmem_exit(void)
|
||||||
{
|
{
|
||||||
|
remove_proc_entry("fb", NULL);
|
||||||
class_destroy(fb_class);
|
class_destroy(fb_class);
|
||||||
unregister_chrdev(FB_MAJOR, "fb");
|
unregister_chrdev(FB_MAJOR, "fb");
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
unsigned afs_debug;
|
unsigned afs_debug;
|
||||||
module_param_named(debug, afs_debug, uint, S_IWUSR | S_IRUGO);
|
module_param_named(debug, afs_debug, uint, S_IWUSR | S_IRUGO);
|
||||||
MODULE_PARM_DESC(afs_debug, "AFS debugging mask");
|
MODULE_PARM_DESC(debug, "AFS debugging mask");
|
||||||
|
|
||||||
static char *rootcell;
|
static char *rootcell;
|
||||||
|
|
||||||
|
|
|
@ -835,7 +835,7 @@ ext2_xattr_cache_insert(struct buffer_head *bh)
|
||||||
struct mb_cache_entry *ce;
|
struct mb_cache_entry *ce;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
ce = mb_cache_entry_alloc(ext2_xattr_cache);
|
ce = mb_cache_entry_alloc(ext2_xattr_cache, GFP_NOFS);
|
||||||
if (!ce)
|
if (!ce)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
error = mb_cache_entry_insert(ce, bh->b_bdev, bh->b_blocknr, &hash);
|
error = mb_cache_entry_insert(ce, bh->b_bdev, bh->b_blocknr, &hash);
|
||||||
|
|
|
@ -1126,7 +1126,7 @@ ext3_xattr_cache_insert(struct buffer_head *bh)
|
||||||
struct mb_cache_entry *ce;
|
struct mb_cache_entry *ce;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
ce = mb_cache_entry_alloc(ext3_xattr_cache);
|
ce = mb_cache_entry_alloc(ext3_xattr_cache, GFP_NOFS);
|
||||||
if (!ce) {
|
if (!ce) {
|
||||||
ea_bdebug(bh, "out of memory");
|
ea_bdebug(bh, "out of memory");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1386,7 +1386,7 @@ ext4_xattr_cache_insert(struct buffer_head *bh)
|
||||||
struct mb_cache_entry *ce;
|
struct mb_cache_entry *ce;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
ce = mb_cache_entry_alloc(ext4_xattr_cache);
|
ce = mb_cache_entry_alloc(ext4_xattr_cache, GFP_NOFS);
|
||||||
if (!ce) {
|
if (!ce) {
|
||||||
ea_bdebug(bh, "out of memory");
|
ea_bdebug(bh, "out of memory");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -399,11 +399,11 @@ mb_cache_destroy(struct mb_cache *cache)
|
||||||
* if no more memory was available.
|
* if no more memory was available.
|
||||||
*/
|
*/
|
||||||
struct mb_cache_entry *
|
struct mb_cache_entry *
|
||||||
mb_cache_entry_alloc(struct mb_cache *cache)
|
mb_cache_entry_alloc(struct mb_cache *cache, gfp_t gfp_flags)
|
||||||
{
|
{
|
||||||
struct mb_cache_entry *ce;
|
struct mb_cache_entry *ce;
|
||||||
|
|
||||||
ce = kmem_cache_alloc(cache->c_entry_cache, GFP_KERNEL);
|
ce = kmem_cache_alloc(cache->c_entry_cache, gfp_flags);
|
||||||
if (ce) {
|
if (ce) {
|
||||||
atomic_inc(&cache->c_entry_count);
|
atomic_inc(&cache->c_entry_count);
|
||||||
INIT_LIST_HEAD(&ce->e_lru_list);
|
INIT_LIST_HEAD(&ce->e_lru_list);
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
struct s3c2410_spi_info {
|
struct s3c2410_spi_info {
|
||||||
unsigned long pin_cs; /* simple gpio cs */
|
unsigned long pin_cs; /* simple gpio cs */
|
||||||
|
unsigned int num_cs; /* total chipselects */
|
||||||
|
|
||||||
void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol);
|
void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol);
|
||||||
};
|
};
|
||||||
|
|
|
@ -122,24 +122,6 @@ static const struct drive_list_entry dma_black_list [] = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* function prototyping */
|
|
||||||
u8 auide_inb(unsigned long port);
|
|
||||||
u16 auide_inw(unsigned long port);
|
|
||||||
u32 auide_inl(unsigned long port);
|
|
||||||
void auide_insw(unsigned long port, void *addr, u32 count);
|
|
||||||
void auide_insl(unsigned long port, void *addr, u32 count);
|
|
||||||
void auide_outb(u8 addr, unsigned long port);
|
|
||||||
void auide_outbsync(ide_drive_t *drive, u8 addr, unsigned long port);
|
|
||||||
void auide_outw(u16 addr, unsigned long port);
|
|
||||||
void auide_outl(u32 addr, unsigned long port);
|
|
||||||
void auide_outsw(unsigned long port, void *addr, u32 count);
|
|
||||||
void auide_outsl(unsigned long port, void *addr, u32 count);
|
|
||||||
static void auide_tune_drive(ide_drive_t *drive, byte pio);
|
|
||||||
static int auide_tune_chipset(ide_drive_t *drive, u8 speed);
|
|
||||||
static int auide_ddma_init( _auide_hwif *auide );
|
|
||||||
static void auide_setup_ports(hw_regs_t *hw, _auide_hwif *ahwif);
|
|
||||||
int __init auide_probe(void);
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* PIO Mode timing calculation : *
|
* PIO Mode timing calculation : *
|
||||||
* *
|
* *
|
||||||
|
|
|
@ -173,8 +173,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
|
||||||
#define AU1XXX_SMC91111_IRQ DB1200_ETH_INT
|
#define AU1XXX_SMC91111_IRQ DB1200_ETH_INT
|
||||||
|
|
||||||
#define AU1XXX_ATA_PHYS_ADDR (0x18800000)
|
#define AU1XXX_ATA_PHYS_ADDR (0x18800000)
|
||||||
#define AU1XXX_ATA_PHYS_LEN (0x100)
|
|
||||||
#define AU1XXX_ATA_REG_OFFSET (5)
|
#define AU1XXX_ATA_REG_OFFSET (5)
|
||||||
|
#define AU1XXX_ATA_PHYS_LEN (16 << AU1XXX_ATA_REG_OFFSET)
|
||||||
#define AU1XXX_ATA_INT DB1200_IDE_INT
|
#define AU1XXX_ATA_INT DB1200_IDE_INT
|
||||||
#define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1;
|
#define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1;
|
||||||
#define AU1XXX_ATA_RQSIZE 128
|
#define AU1XXX_ATA_RQSIZE 128
|
||||||
|
|
|
@ -186,8 +186,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR;
|
||||||
#define AU1XXX_SMC91111_IRQ PB1200_ETH_INT
|
#define AU1XXX_SMC91111_IRQ PB1200_ETH_INT
|
||||||
|
|
||||||
#define AU1XXX_ATA_PHYS_ADDR (0x0C800000)
|
#define AU1XXX_ATA_PHYS_ADDR (0x0C800000)
|
||||||
#define AU1XXX_ATA_PHYS_LEN (0x100)
|
|
||||||
#define AU1XXX_ATA_REG_OFFSET (5)
|
#define AU1XXX_ATA_REG_OFFSET (5)
|
||||||
|
#define AU1XXX_ATA_PHYS_LEN (16 << AU1XXX_ATA_REG_OFFSET)
|
||||||
#define AU1XXX_ATA_INT PB1200_IDE_INT
|
#define AU1XXX_ATA_INT PB1200_IDE_INT
|
||||||
#define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1;
|
#define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1;
|
||||||
#define AU1XXX_ATA_RQSIZE 128
|
#define AU1XXX_ATA_RQSIZE 128
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef __UM_TLB_H
|
#ifndef __UM_TLB_H
|
||||||
#define __UM_TLB_H
|
#define __UM_TLB_H
|
||||||
|
|
||||||
|
#include <linux/pagemap.h>
|
||||||
#include <linux/swap.h>
|
#include <linux/swap.h>
|
||||||
#include <asm/percpu.h>
|
#include <asm/percpu.h>
|
||||||
#include <asm/pgalloc.h>
|
#include <asm/pgalloc.h>
|
||||||
|
|
|
@ -91,8 +91,10 @@ static inline struct io_context *ioc_task_link(struct io_context *ioc)
|
||||||
* if ref count is zero, don't allow sharing (ioc is going away, it's
|
* if ref count is zero, don't allow sharing (ioc is going away, it's
|
||||||
* a race).
|
* a race).
|
||||||
*/
|
*/
|
||||||
if (ioc && atomic_inc_not_zero(&ioc->refcount))
|
if (ioc && atomic_inc_not_zero(&ioc->refcount)) {
|
||||||
|
atomic_inc(&ioc->nr_tasks);
|
||||||
return ioc;
|
return ioc;
|
||||||
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ void mb_cache_destroy(struct mb_cache *);
|
||||||
|
|
||||||
/* Functions on cache entries */
|
/* Functions on cache entries */
|
||||||
|
|
||||||
struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *);
|
struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *, gfp_t);
|
||||||
int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *,
|
int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *,
|
||||||
sector_t, unsigned int[]);
|
sector_t, unsigned int[]);
|
||||||
void mb_cache_entry_release(struct mb_cache_entry *);
|
void mb_cache_entry_release(struct mb_cache_entry *);
|
||||||
|
|
|
@ -129,6 +129,10 @@ struct ssb_device {
|
||||||
const struct ssb_bus_ops *ops;
|
const struct ssb_bus_ops *ops;
|
||||||
|
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
/* Pointer to the device that has to be used for
|
||||||
|
* any DMA related operation. */
|
||||||
|
struct device *dma_dev;
|
||||||
|
|
||||||
struct ssb_bus *bus;
|
struct ssb_bus *bus;
|
||||||
struct ssb_device_id id;
|
struct ssb_device_id id;
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ struct thermal_cooling_device_ops {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define THERMAL_TRIPS_NONE -1
|
#define THERMAL_TRIPS_NONE -1
|
||||||
#define THERMAL_MAX_TRIPS 10
|
#define THERMAL_MAX_TRIPS 12
|
||||||
#define THERMAL_NAME_LENGTH 20
|
#define THERMAL_NAME_LENGTH 20
|
||||||
struct thermal_cooling_device {
|
struct thermal_cooling_device {
|
||||||
int id;
|
int id;
|
||||||
|
|
|
@ -643,8 +643,21 @@ static int acquire_console_semaphore_for_printk(unsigned int cpu)
|
||||||
{
|
{
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
|
|
||||||
if (can_use_console(cpu))
|
if (!try_acquire_console_sem()) {
|
||||||
retval = !try_acquire_console_sem();
|
retval = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we can't use the console, we need to release
|
||||||
|
* the console semaphore by hand to avoid flushing
|
||||||
|
* the buffer. We need to hold the console semaphore
|
||||||
|
* in order to do this test safely.
|
||||||
|
*/
|
||||||
|
if (!can_use_console(cpu)) {
|
||||||
|
console_locked = 0;
|
||||||
|
up(&console_sem);
|
||||||
|
retval = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
printk_cpu = UINT_MAX;
|
printk_cpu = UINT_MAX;
|
||||||
spin_unlock(&logbuf_lock);
|
spin_unlock(&logbuf_lock);
|
||||||
return retval;
|
return retval;
|
||||||
|
|
|
@ -423,7 +423,7 @@ void mem_cgroup_out_of_memory(struct mem_cgroup *mem, gfp_t gfp_mask)
|
||||||
struct task_struct *p;
|
struct task_struct *p;
|
||||||
|
|
||||||
cgroup_lock();
|
cgroup_lock();
|
||||||
rcu_read_lock();
|
read_lock(&tasklist_lock);
|
||||||
retry:
|
retry:
|
||||||
p = select_bad_process(&points, mem);
|
p = select_bad_process(&points, mem);
|
||||||
if (PTR_ERR(p) == -1UL)
|
if (PTR_ERR(p) == -1UL)
|
||||||
|
@ -436,7 +436,7 @@ retry:
|
||||||
"Memory cgroup out of memory"))
|
"Memory cgroup out of memory"))
|
||||||
goto retry;
|
goto retry;
|
||||||
out:
|
out:
|
||||||
rcu_read_unlock();
|
read_unlock(&tasklist_lock);
|
||||||
cgroup_unlock();
|
cgroup_unlock();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
10
mm/sparse.c
10
mm/sparse.c
|
@ -149,8 +149,18 @@ static inline int sparse_early_nid(struct mem_section *section)
|
||||||
/* Record a memory area against a node. */
|
/* Record a memory area against a node. */
|
||||||
void __init memory_present(int nid, unsigned long start, unsigned long end)
|
void __init memory_present(int nid, unsigned long start, unsigned long end)
|
||||||
{
|
{
|
||||||
|
unsigned long max_arch_pfn = 1UL << (MAX_PHYSMEM_BITS-PAGE_SHIFT);
|
||||||
unsigned long pfn;
|
unsigned long pfn;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sanity checks - do not allow an architecture to pass
|
||||||
|
* in larger pfns than the maximum scope of sparsemem:
|
||||||
|
*/
|
||||||
|
if (start >= max_arch_pfn)
|
||||||
|
return;
|
||||||
|
if (end >= max_arch_pfn)
|
||||||
|
end = max_arch_pfn;
|
||||||
|
|
||||||
start &= PAGE_SECTION_MASK;
|
start &= PAGE_SECTION_MASK;
|
||||||
for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) {
|
for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) {
|
||||||
unsigned long section = pfn_to_section_nr(pfn);
|
unsigned long section = pfn_to_section_nr(pfn);
|
||||||
|
|
|
@ -388,6 +388,7 @@ static char * const migratetype_names[MIGRATE_TYPES] = {
|
||||||
"Reclaimable",
|
"Reclaimable",
|
||||||
"Movable",
|
"Movable",
|
||||||
"Reserve",
|
"Reserve",
|
||||||
|
"Isolate",
|
||||||
};
|
};
|
||||||
|
|
||||||
static void *frag_start(struct seq_file *m, loff_t *pos)
|
static void *frag_start(struct seq_file *m, loff_t *pos)
|
||||||
|
|
|
@ -3841,8 +3841,28 @@ static void tcp_ofo_queue(struct sock *sk)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int tcp_prune_ofo_queue(struct sock *sk);
|
||||||
static int tcp_prune_queue(struct sock *sk);
|
static int tcp_prune_queue(struct sock *sk);
|
||||||
|
|
||||||
|
static inline int tcp_try_rmem_schedule(struct sock *sk, unsigned int size)
|
||||||
|
{
|
||||||
|
if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf ||
|
||||||
|
!sk_rmem_schedule(sk, size)) {
|
||||||
|
|
||||||
|
if (tcp_prune_queue(sk) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (!sk_rmem_schedule(sk, size)) {
|
||||||
|
if (!tcp_prune_ofo_queue(sk))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (!sk_rmem_schedule(sk, size))
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
|
static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct tcphdr *th = tcp_hdr(skb);
|
struct tcphdr *th = tcp_hdr(skb);
|
||||||
|
@ -3892,12 +3912,9 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
|
||||||
if (eaten <= 0) {
|
if (eaten <= 0) {
|
||||||
queue_and_out:
|
queue_and_out:
|
||||||
if (eaten < 0 &&
|
if (eaten < 0 &&
|
||||||
(atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf ||
|
tcp_try_rmem_schedule(sk, skb->truesize))
|
||||||
!sk_rmem_schedule(sk, skb->truesize))) {
|
|
||||||
if (tcp_prune_queue(sk) < 0 ||
|
|
||||||
!sk_rmem_schedule(sk, skb->truesize))
|
|
||||||
goto drop;
|
goto drop;
|
||||||
}
|
|
||||||
skb_set_owner_r(skb, sk);
|
skb_set_owner_r(skb, sk);
|
||||||
__skb_queue_tail(&sk->sk_receive_queue, skb);
|
__skb_queue_tail(&sk->sk_receive_queue, skb);
|
||||||
}
|
}
|
||||||
|
@ -3966,12 +3983,8 @@ drop:
|
||||||
|
|
||||||
TCP_ECN_check_ce(tp, skb);
|
TCP_ECN_check_ce(tp, skb);
|
||||||
|
|
||||||
if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf ||
|
if (tcp_try_rmem_schedule(sk, skb->truesize))
|
||||||
!sk_rmem_schedule(sk, skb->truesize)) {
|
|
||||||
if (tcp_prune_queue(sk) < 0 ||
|
|
||||||
!sk_rmem_schedule(sk, skb->truesize))
|
|
||||||
goto drop;
|
goto drop;
|
||||||
}
|
|
||||||
|
|
||||||
/* Disable header prediction. */
|
/* Disable header prediction. */
|
||||||
tp->pred_flags = 0;
|
tp->pred_flags = 0;
|
||||||
|
@ -4198,6 +4211,32 @@ static void tcp_collapse_ofo_queue(struct sock *sk)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Purge the out-of-order queue.
|
||||||
|
* Return true if queue was pruned.
|
||||||
|
*/
|
||||||
|
static int tcp_prune_ofo_queue(struct sock *sk)
|
||||||
|
{
|
||||||
|
struct tcp_sock *tp = tcp_sk(sk);
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
if (!skb_queue_empty(&tp->out_of_order_queue)) {
|
||||||
|
NET_INC_STATS_BH(LINUX_MIB_OFOPRUNED);
|
||||||
|
__skb_queue_purge(&tp->out_of_order_queue);
|
||||||
|
|
||||||
|
/* Reset SACK state. A conforming SACK implementation will
|
||||||
|
* do the same at a timeout based retransmit. When a connection
|
||||||
|
* is in a sad state like this, we care only about integrity
|
||||||
|
* of the connection not performance.
|
||||||
|
*/
|
||||||
|
if (tp->rx_opt.sack_ok)
|
||||||
|
tcp_sack_reset(&tp->rx_opt);
|
||||||
|
sk_mem_reclaim(sk);
|
||||||
|
res = 1;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
/* Reduce allocated memory if we can, trying to get
|
/* Reduce allocated memory if we can, trying to get
|
||||||
* the socket within its memory limits again.
|
* the socket within its memory limits again.
|
||||||
*
|
*
|
||||||
|
@ -4231,20 +4270,7 @@ static int tcp_prune_queue(struct sock *sk)
|
||||||
/* Collapsing did not help, destructive actions follow.
|
/* Collapsing did not help, destructive actions follow.
|
||||||
* This must not ever occur. */
|
* This must not ever occur. */
|
||||||
|
|
||||||
/* First, purge the out_of_order queue. */
|
tcp_prune_ofo_queue(sk);
|
||||||
if (!skb_queue_empty(&tp->out_of_order_queue)) {
|
|
||||||
NET_INC_STATS_BH(LINUX_MIB_OFOPRUNED);
|
|
||||||
__skb_queue_purge(&tp->out_of_order_queue);
|
|
||||||
|
|
||||||
/* Reset SACK state. A conforming SACK implementation will
|
|
||||||
* do the same at a timeout based retransmit. When a connection
|
|
||||||
* is in a sad state like this, we care only about integrity
|
|
||||||
* of the connection not performance.
|
|
||||||
*/
|
|
||||||
if (tcp_is_sack(tp))
|
|
||||||
tcp_sack_reset(&tp->rx_opt);
|
|
||||||
sk_mem_reclaim(sk);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf)
|
if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1050,12 +1050,9 @@ ieee80211_drop_unencrypted(struct ieee80211_txrx_data *rx)
|
||||||
if (unlikely(!(rx->fc & IEEE80211_FCTL_PROTECTED) &&
|
if (unlikely(!(rx->fc & IEEE80211_FCTL_PROTECTED) &&
|
||||||
(rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
|
(rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
|
||||||
(rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC &&
|
(rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC &&
|
||||||
(rx->key || rx->sdata->drop_unencrypted))) {
|
(rx->key || rx->sdata->drop_unencrypted)))
|
||||||
if (net_ratelimit())
|
|
||||||
printk(KERN_DEBUG "%s: RX non-WEP frame, but expected "
|
|
||||||
"encryption\n", rx->dev->name);
|
|
||||||
return -EACCES;
|
return -EACCES;
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ void rfkill_switch_all(enum rfkill_type type, enum rfkill_state state)
|
||||||
rfkill_states[type] = state;
|
rfkill_states[type] = state;
|
||||||
|
|
||||||
list_for_each_entry(rfkill, &rfkill_list, node) {
|
list_for_each_entry(rfkill, &rfkill_list, node) {
|
||||||
if (!rfkill->user_claim)
|
if ((!rfkill->user_claim) && (rfkill->type == type))
|
||||||
rfkill_toggle_radio(rfkill, state);
|
rfkill_toggle_radio(rfkill, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ MODULE_ALIAS_NETPROTO(PF_RXRPC);
|
||||||
|
|
||||||
unsigned rxrpc_debug; // = RXRPC_DEBUG_KPROTO;
|
unsigned rxrpc_debug; // = RXRPC_DEBUG_KPROTO;
|
||||||
module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO);
|
module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO);
|
||||||
MODULE_PARM_DESC(rxrpc_debug, "RxRPC debugging mask");
|
MODULE_PARM_DESC(debug, "RxRPC debugging mask");
|
||||||
|
|
||||||
static int sysctl_rxrpc_max_qlen __read_mostly = 10;
|
static int sysctl_rxrpc_max_qlen __read_mostly = 10;
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
unsigned rxrpc_debug;
|
unsigned rxrpc_debug;
|
||||||
module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO);
|
module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO);
|
||||||
MODULE_PARM_DESC(rxrpc_debug, "rxkad debugging mask");
|
MODULE_PARM_DESC(debug, "rxkad debugging mask");
|
||||||
|
|
||||||
struct rxkad_level1_hdr {
|
struct rxkad_level1_hdr {
|
||||||
__be32 data_size; /* true data size (excluding padding) */
|
__be32 data_size; /* true data size (excluding padding) */
|
||||||
|
|
|
@ -386,6 +386,9 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n)
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
return;
|
return;
|
||||||
while ((parentid = sch->parent)) {
|
while ((parentid = sch->parent)) {
|
||||||
|
if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS))
|
||||||
|
return;
|
||||||
|
|
||||||
sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid));
|
sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid));
|
||||||
if (sch == NULL) {
|
if (sch == NULL) {
|
||||||
WARN_ON(parentid != TC_H_ROOT);
|
WARN_ON(parentid != TC_H_ROOT);
|
||||||
|
|
Loading…
Reference in a new issue