Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge Linux 3.0.58 #8

Merged
merged 51 commits into from
Jan 14, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
868d550
Fix build error if enable xfs or btfs
hardkernel Jan 10, 2013
a8695e1
bonding: Bonding driver does not consider the gso_max_size/gso_max_se…
Nov 21, 2012
cefbc05
bonding: fix race condition in bonding_store_slaves_active
Nov 29, 2012
e620776
sctp: fix memory leak in sctp_datamsg_from_user() when copy from user…
rantala Nov 27, 2012
55fdb80
sctp: fix -ENOMEM result with invalid user space pointer in sendto() …
rantala Nov 22, 2012
80fef29
ne2000: add the right platform device
Nov 20, 2012
98ffdcd
irda: sir_dev: Fix copy/paste typo
shcgit Nov 20, 2012
8d759d1
usb/ipheth: Add iPhone 5 support
Oct 14, 2012
947d716
pnpacpi: fix incorrect TEST_ALPHA() test
Alan-Cox Dec 7, 2012
28278b3
exec: do not leave bprm->interp on stack
kees Dec 20, 2012
276c234
x86, 8042: Enable A20 using KBC to fix S3 resume on some MSI laptops
Dec 11, 2012
812e638
virtio: force vring descriptors to be allocated from lowmem
wildea01 Oct 19, 2012
8fafe01
mm: Fix PageHead when !CONFIG_PAGEFLAGS_EXTENDED
chazy Dec 21, 2012
51afc62
tmpfs mempolicy: fix /proc/mounts corrupting memory
Jan 2, 2013
5a6400c
ALSA: usb-audio: Avoid autopm calls after disconnection
tiwai Dec 3, 2012
6ab1dea
ALSA: usb-audio: Fix missing autopm for MIDI input
tiwai Dec 3, 2012
45a62af
p54usb: add USB ID for T-Com Sinus 154 data II
Dec 22, 2012
1db444f
p54usb: add USBIDs for two more p54usb devices
chunkeey Dec 27, 2012
42fac8e
usb: gadget: phonet: free requests in pn_bind()'s error path
Oct 22, 2012
611d6f0
ACPI / scan: Do not use dummy HID for system bus ACPI nodes
rafaeljw Jan 4, 2013
64b45c8
NFS: avoid NULL dereference in nfs_destroy_server
neilbrown Dec 13, 2012
9d53441
NFS: Fix calls to drop_nlink()
Dec 14, 2012
d6e0c42
nfsd4: fix oops on unusual readlike compound
Dec 4, 2012
31c4e8c
nfs: fix null checking in nfs_get_option_str()
xiw Jan 4, 2013
ada84ad
Input: walkera0701 - fix crash on startup
Dec 15, 2012
d038911
genirq: Always force thread affinity
KAGA-KOKO Nov 3, 2012
5729b13
xhci: Add Lynx Point LP to list of Intel switchable hosts
Nov 9, 2012
01fdcf4
cgroup: remove incorrect dget/dput() pair in cgroup_create_dir()
htejun Nov 19, 2012
6c94f43
x86, amd: Disable way access filter on Piledriver CPUs
aprzywar Oct 31, 2012
6fe7238
ftrace: Do not function trace inlined functions
Dec 12, 2011
1e8928a
sparc: huge_ptep_set_* functions need to call set_huge_pte_at()
kleikamp Dec 17, 2012
9b79271
net: sched: integer overflow fix
matiniero Dec 21, 2012
86791bb
tcp: implement RFC 5961 3.2
Jul 17, 2012
ab5c718
tcp: implement RFC 5961 4.2
Jul 17, 2012
282190e
tcp: refine SYN handling in tcp_validate_incoming
Jul 17, 2012
ffd34fc
tcp: tcp_replace_ts_recent() should not be called from tcp_validate_i…
Nov 13, 2012
8d15569
tcp: RFC 5961 5.2 Blind Data Injection Attack Mitigation
Oct 21, 2012
f61019b
ARM: mm: use pteval_t to represent page protection values
wildea01 Sep 18, 2012
0b6916a
ARM: missing ->mmap_sem around find_vma() in swp_emulate.c
Dec 16, 2012
decbd08
solos-pci: fix double-free of TX skb in DMA mode
dwmw2 Dec 11, 2012
e641306
PCI: Reduce Ricoh 0xe822 SD card reader base clock frequency to 50MHz
amluto Dec 1, 2012
1bc2621
Bluetooth: ath3k: Add support for VAIO VPCEH [0489:e027]
mrkindustries Nov 6, 2012
9b7b38a
Bluetooth: cancel power_on work when unregistering the device
Nov 21, 2012
4a16c40
CRIS: fix I/O macros
cminyard Dec 18, 2012
afc0e69
drivers/rtc/rtc-vt8500.c: correct handling of CR_24H bitfield
tonyprisk Jan 4, 2013
a2e1113
drivers/rtc/rtc-vt8500.c: fix handling of data passed in struct rtc_time
tonyprisk Jan 4, 2013
c39096f
mm: limit mmu_gather batching to fix soft lockups on !CONFIG_PREEMPT
Jan 4, 2013
a0ed2e7
can: Do not call dev_put if restart timer is running upon close
Nov 27, 2012
2a68fec
Linux 3.0.58
gregkh Jan 11, 2013
08c96fe
Merge branch 'odroid-3.0.y' of git://github.com/hardkernel/linux into…
zehome Jan 12, 2013
c59e25f
Merge branch 'linux-3.0.58' into odroid-ed-3.0.y
zehome Jan 12, 2013
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Documentation/networking/ip-sysctl.txt
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,11 @@ tcp_thin_dupack - BOOLEAN
Documentation/networking/tcp-thin.txt
Default: 0

tcp_challenge_ack_limit - INTEGER
Limits number of Challenge ACK sent per second, as recommended
in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks)
Default: 100

UDP variables:

udp_mem - vector of 3 INTEGERs: min, pressure, max
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
VERSION = 3
PATCHLEVEL = 0
SUBLEVEL = 57
SUBLEVEL = 58
EXTRAVERSION =
NAME = Sneaky Weasel

Expand Down
2 changes: 2 additions & 0 deletions arch/arm/kernel/swp_emulate.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,12 @@ static void set_segfault(struct pt_regs *regs, unsigned long addr)
{
siginfo_t info;

down_read(&current->mm->mmap_sem);
if (find_vma(current->mm, addr) == NULL)
info.si_code = SEGV_MAPERR;
else
info.si_code = SEGV_ACCERR;
up_read(&current->mm->mmap_sem);

info.si_signo = SIGSEGV;
info.si_errno = 0;
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mm/mmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ static void __init build_mem_type_table(void)
}

for (i = 0; i < 16; i++) {
unsigned long v = pgprot_val(protection_map[i]);
pteval_t v = pgprot_val(protection_map[i]);
protection_map[i] = __pgprot(v | user_pgprot);
}

Expand Down
39 changes: 33 additions & 6 deletions arch/cris/include/asm/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,12 +133,39 @@ static inline void writel(unsigned int b, volatile void __iomem *addr)
#define insb(port,addr,count) (cris_iops ? cris_iops->read_io(port,addr,1,count) : 0)
#define insw(port,addr,count) (cris_iops ? cris_iops->read_io(port,addr,2,count) : 0)
#define insl(port,addr,count) (cris_iops ? cris_iops->read_io(port,addr,4,count) : 0)
#define outb(data,port) if (cris_iops) cris_iops->write_io(port,(void*)(unsigned)data,1,1)
#define outw(data,port) if (cris_iops) cris_iops->write_io(port,(void*)(unsigned)data,2,1)
#define outl(data,port) if (cris_iops) cris_iops->write_io(port,(void*)(unsigned)data,4,1)
#define outsb(port,addr,count) if(cris_iops) cris_iops->write_io(port,(void*)addr,1,count)
#define outsw(port,addr,count) if(cris_iops) cris_iops->write_io(port,(void*)addr,2,count)
#define outsl(port,addr,count) if(cris_iops) cris_iops->write_io(port,(void*)addr,3,count)
static inline void outb(unsigned char data, unsigned int port)
{
if (cris_iops)
cris_iops->write_io(port, (void *) &data, 1, 1);
}
static inline void outw(unsigned short data, unsigned int port)
{
if (cris_iops)
cris_iops->write_io(port, (void *) &data, 2, 1);
}
static inline void outl(unsigned int data, unsigned int port)
{
if (cris_iops)
cris_iops->write_io(port, (void *) &data, 4, 1);
}
static inline void outsb(unsigned int port, const void *addr,
unsigned long count)
{
if (cris_iops)
cris_iops->write_io(port, (void *)addr, 1, count);
}
static inline void outsw(unsigned int port, const void *addr,
unsigned long count)
{
if (cris_iops)
cris_iops->write_io(port, (void *)addr, 2, count);
}
static inline void outsl(unsigned int port, const void *addr,
unsigned long count)
{
if (cris_iops)
cris_iops->write_io(port, (void *)addr, 4, count);
}

/*
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
Expand Down
10 changes: 8 additions & 2 deletions arch/sparc/include/asm/hugetlb.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,20 @@ static inline pte_t huge_pte_wrprotect(pte_t pte)
static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
unsigned long addr, pte_t *ptep)
{
ptep_set_wrprotect(mm, addr, ptep);
pte_t old_pte = *ptep;
set_huge_pte_at(mm, addr, ptep, pte_wrprotect(old_pte));
}

static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
unsigned long addr, pte_t *ptep,
pte_t pte, int dirty)
{
return ptep_set_access_flags(vma, addr, ptep, pte, dirty);
int changed = !pte_same(*ptep, pte);
if (changed) {
set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
flush_tlb_page(vma, addr);
}
return changed;
}

static inline pte_t huge_ptep_get(pte_t *ptep)
Expand Down
14 changes: 14 additions & 0 deletions arch/x86/kernel/cpu/amd.c
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,20 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
}
}

/*
* The way access filter has a performance penalty on some workloads.
* Disable it on the affected CPUs.
*/
if ((c->x86 == 0x15) &&
(c->x86_model >= 0x02) && (c->x86_model < 0x20)) {
u64 val;

if (!rdmsrl_safe(0xc0011021, &val) && !(val & 0x1E)) {
val |= 0x1E;
checking_wrmsrl(0xc0011021, val);
}
}

cpu_detect_cache_sizes(c);

/* Multi core CPU? */
Expand Down
2 changes: 1 addition & 1 deletion drivers/acpi/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -1153,7 +1153,7 @@ static void acpi_device_set_id(struct acpi_device *device)
acpi_add_id(device, ACPI_DOCK_HID);
else if (!acpi_ibm_smbus_match(device))
acpi_add_id(device, ACPI_SMBUS_IBM_HID);
else if (!acpi_device_hid(device) &&
else if (list_empty(&device->pnp.ids) &&
ACPI_IS_ROOT_DEVICE(device->parent)) {
acpi_add_id(device, ACPI_BUS_HID); /* \_SB, LNXSYBUS */
strcpy(device->pnp.device_name, ACPI_BUS_DEVICE_NAME);
Expand Down
5 changes: 3 additions & 2 deletions drivers/atm/solos-pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -967,10 +967,11 @@ static uint32_t fpga_tx(struct solos_card *card)
for (port = 0; tx_pending; tx_pending >>= 1, port++) {
if (tx_pending & 1) {
struct sk_buff *oldskb = card->tx_skb[port];
if (oldskb)
if (oldskb) {
pci_unmap_single(card->dev, SKB_CB(oldskb)->dma_addr,
oldskb->len, PCI_DMA_TODEVICE);

card->tx_skb[port] = NULL;
}
spin_lock(&card->tx_queue_lock);
skb = skb_dequeue(&card->tx_queue[port]);
if (!skb)
Expand Down
1 change: 1 addition & 0 deletions drivers/bluetooth/ath3k.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ static struct usb_device_id ath3k_table[] = {
{ USB_DEVICE(0x13d3, 0x3304) },
{ USB_DEVICE(0x0930, 0x0215) },
{ USB_DEVICE(0x0489, 0xE03D) },
{ USB_DEVICE(0x0489, 0xE027) },

/* Atheros AR9285 Malbec with sflash firmware */
{ USB_DEVICE(0x03F0, 0x311D) },
Expand Down
1 change: 1 addition & 0 deletions drivers/bluetooth/btusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ static struct usb_device_id blacklist_table[] = {
{ USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE },
{ USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE },
{ USB_DEVICE(0x0489, 0xe03d), .driver_info = BTUSB_IGNORE },
{ USB_DEVICE(0x0489, 0xe027), .driver_info = BTUSB_IGNORE },

/* Atheros AR9285 Malbec with sflash firmware */
{ USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
Expand Down
7 changes: 4 additions & 3 deletions drivers/input/joystick/walkera0701.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ static void walkera0701_close(struct input_dev *dev)
struct walkera_dev *w = input_get_drvdata(dev);

parport_disable_irq(w->parport);
hrtimer_cancel(&w->timer);
}

static int walkera0701_connect(struct walkera_dev *w, int parport)
Expand Down Expand Up @@ -224,6 +225,9 @@ static int walkera0701_connect(struct walkera_dev *w, int parport)
if (parport_claim(w->pardevice))
goto init_err1;

hrtimer_init(&w->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
w->timer.function = timer_handler;

w->input_dev = input_allocate_device();
if (!w->input_dev)
goto init_err2;
Expand Down Expand Up @@ -254,8 +258,6 @@ static int walkera0701_connect(struct walkera_dev *w, int parport)
if (err)
goto init_err3;

hrtimer_init(&w->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
w->timer.function = timer_handler;
return 0;

init_err3:
Expand All @@ -271,7 +273,6 @@ static int walkera0701_connect(struct walkera_dev *w, int parport)

static void walkera0701_disconnect(struct walkera_dev *w)
{
hrtimer_cancel(&w->timer);
input_unregister_device(w->input_dev);
parport_release(w->pardevice);
parport_unregister_device(w->pardevice);
Expand Down
9 changes: 9 additions & 0 deletions drivers/input/serio/i8042-x86ia64io.h
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,7 @@ static int __init i8042_platform_init(void)
int retval;

#ifdef CONFIG_X86
u8 a20_on = 0xdf;
/* Just return if pre-detection shows no i8042 controller exist */
if (!x86_platform.i8042_detect())
return -ENODEV;
Expand Down Expand Up @@ -939,6 +940,14 @@ static int __init i8042_platform_init(void)

if (dmi_check_system(i8042_dmi_dritek_table))
i8042_dritek = true;

/*
* A20 was already enabled during early kernel init. But some buggy
* BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to
* resume from S3. So we do it here and hope that nothing breaks.
*/
i8042_command(&a20_on, 0x10d1);
i8042_command(NULL, 0x00ff); /* Null command for SMM firmware */
#endif /* CONFIG_X86 */

return retval;
Expand Down
7 changes: 7 additions & 0 deletions drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1439,6 +1439,8 @@ static void bond_compute_features(struct bonding *bond)
struct net_device *bond_dev = bond->dev;
u32 vlan_features = BOND_VLAN_FEATURES;
unsigned short max_hard_header_len = ETH_HLEN;
unsigned int gso_max_size = GSO_MAX_SIZE;
u16 gso_max_segs = GSO_MAX_SEGS;
int i;

read_lock(&bond->lock);
Expand All @@ -1452,11 +1454,16 @@ static void bond_compute_features(struct bonding *bond)

if (slave->dev->hard_header_len > max_hard_header_len)
max_hard_header_len = slave->dev->hard_header_len;

gso_max_size = min(gso_max_size, slave->dev->gso_max_size);
gso_max_segs = min(gso_max_segs, slave->dev->gso_max_segs);
}

done:
bond_dev->vlan_features = vlan_features;
bond_dev->hard_header_len = max_hard_header_len;
bond_dev->gso_max_segs = gso_max_segs;
netif_set_gso_max_size(bond_dev, gso_max_size);

read_unlock(&bond->lock);

Expand Down
2 changes: 2 additions & 0 deletions drivers/net/bonding/bond_sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1524,6 +1524,7 @@ static ssize_t bonding_store_slaves_active(struct device *d,
goto out;
}

read_lock(&bond->lock);
bond_for_each_slave(bond, slave, i) {
if (!bond_is_active_slave(slave)) {
if (new_value)
Expand All @@ -1532,6 +1533,7 @@ static ssize_t bonding_store_slaves_active(struct device *d,
slave->inactive = 1;
}
}
read_unlock(&bond->lock);
out:
return ret;
}
Expand Down
3 changes: 1 addition & 2 deletions drivers/net/can/dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -557,8 +557,7 @@ void close_candev(struct net_device *dev)
{
struct can_priv *priv = netdev_priv(dev);

if (del_timer_sync(&priv->restart_timer))
dev_put(dev);
del_timer_sync(&priv->restart_timer);
can_flush_echo_skb(dev);
}
EXPORT_SYMBOL_GPL(close_candev);
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/irda/sir_dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ static void sirdev_config_fsm(struct work_struct *work)
break;

case SIRDEV_STATE_DONGLE_SPEED:
if (dev->dongle_drv->reset) {
if (dev->dongle_drv->set_speed) {
ret = dev->dongle_drv->set_speed(dev, fsm->param);
if (ret < 0) {
fsm->result = ret;
Expand Down
1 change: 1 addition & 0 deletions drivers/net/ne.c
Original file line number Diff line number Diff line change
Expand Up @@ -814,6 +814,7 @@ static int __init ne_drv_probe(struct platform_device *pdev)
dev->irq = irq[this_dev];
dev->mem_end = bad[this_dev];
}
SET_NETDEV_DEV(dev, &pdev->dev);
err = do_ne_probe(dev);
if (err) {
free_netdev(dev);
Expand Down
5 changes: 5 additions & 0 deletions drivers/net/usb/ipheth.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
#define USB_PRODUCT_IPAD 0x129a
#define USB_PRODUCT_IPHONE_4_VZW 0x129c
#define USB_PRODUCT_IPHONE_4S 0x12a0
#define USB_PRODUCT_IPHONE_5 0x12a8

#define IPHETH_USBINTF_CLASS 255
#define IPHETH_USBINTF_SUBCLASS 253
Expand Down Expand Up @@ -113,6 +114,10 @@ static struct usb_device_id ipheth_table[] = {
USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4S,
IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
IPHETH_USBINTF_PROTO) },
{ USB_DEVICE_AND_INTERFACE_INFO(
USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_5,
IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
IPHETH_USBINTF_PROTO) },
{ }
};
MODULE_DEVICE_TABLE(usb, ipheth_table);
Expand Down
4 changes: 4 additions & 0 deletions drivers/net/wireless/p54/p54usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ static struct usb_device_id p54u_table[] = {
{USB_DEVICE(0x0411, 0x0050)}, /* Buffalo WLI2-USB2-G54 */
{USB_DEVICE(0x045e, 0x00c2)}, /* Microsoft MN-710 */
{USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */
{USB_DEVICE(0x0675, 0x0530)}, /* DrayTek Vigor 530 */
{USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */
{USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */
{USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */
Expand Down Expand Up @@ -81,6 +82,8 @@ static struct usb_device_id p54u_table[] = {
{USB_DEVICE(0x06a9, 0x000e)}, /* Westell 802.11g USB (A90-211WG-01) */
{USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */
{USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */
{USB_DEVICE(0x0803, 0x4310)}, /* Zoom 4410a */
{USB_DEVICE(0x083a, 0x4503)}, /* T-Com Sinus 154 data II */
{USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */
{USB_DEVICE(0x083a, 0xc501)}, /* Zoom Wireless-G 4410 */
{USB_DEVICE(0x083a, 0xf503)}, /* Accton FD7050E ver 1010ec */
Expand All @@ -100,6 +103,7 @@ static struct usb_device_id p54u_table[] = {
{USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */
{USB_DEVICE(0x1413, 0x5400)}, /* Telsey 802.11g USB2.0 Adapter */
{USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */
/* {USB_DEVICE(0x15a9, 0x0002)}, * Also SparkLAN WL-682 with 3887 */
{USB_DEVICE(0x1668, 0x1050)}, /* Actiontec 802UIG-1 */
{USB_DEVICE(0x1740, 0x1000)}, /* Senao NUB-350 */
{USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */
Expand Down
7 changes: 5 additions & 2 deletions drivers/pci/quirks.c
Original file line number Diff line number Diff line change
Expand Up @@ -2746,7 +2746,7 @@ static void ricoh_mmc_fixup_r5c832(struct pci_dev *dev)
if (PCI_FUNC(dev->devfn))
return;
/*
* RICOH 0xe823 SD/MMC card reader fails to recognize
* RICOH 0xe822 and 0xe823 SD/MMC card readers fail to recognize
* certain types of SD/MMC cards. Lowering the SD base
* clock frequency from 200Mhz to 50Mhz fixes this issue.
*
Expand All @@ -2757,7 +2757,8 @@ static void ricoh_mmc_fixup_r5c832(struct pci_dev *dev)
* 0xf9 - Key register for 0x150
* 0xfc - key register for 0xe1
*/
if (dev->device == PCI_DEVICE_ID_RICOH_R5CE823) {
if (dev->device == PCI_DEVICE_ID_RICOH_R5CE822 ||
dev->device == PCI_DEVICE_ID_RICOH_R5CE823) {
pci_write_config_byte(dev, 0xf9, 0xfc);
pci_write_config_byte(dev, 0x150, 0x10);
pci_write_config_byte(dev, 0xf9, 0x00);
Expand All @@ -2784,6 +2785,8 @@ static void ricoh_mmc_fixup_r5c832(struct pci_dev *dev)
}
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832);
DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE822, ricoh_mmc_fixup_r5c832);
DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE822, ricoh_mmc_fixup_r5c832);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE823, ricoh_mmc_fixup_r5c832);
DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE823, ricoh_mmc_fixup_r5c832);
#endif /*CONFIG_MMC_RICOH_MMC*/
Expand Down
2 changes: 1 addition & 1 deletion drivers/pnp/pnpacpi/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ static inline int __init is_exclusive_device(struct acpi_device *dev)
if (!(('0' <= (c) && (c) <= '9') || ('A' <= (c) && (c) <= 'F'))) \
return 0
#define TEST_ALPHA(c) \
if (!('@' <= (c) || (c) <= 'Z')) \
if (!('A' <= (c) && (c) <= 'Z')) \
return 0
static int __init ispnpidacpi(const char *id)
{
Expand Down
Loading