diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/char/tty_io.c | 2 | ||||
| -rw-r--r-- | drivers/hid/hid-gyration.c | 5 | ||||
| -rw-r--r-- | drivers/hid/usbhid/hid-quirks.c | 1 | ||||
| -rw-r--r-- | drivers/misc/kgdbts.c | 6 | ||||
| -rw-r--r-- | drivers/of/fdt.c | 7 | ||||
| -rw-r--r-- | drivers/pci/quirks.c | 36 | ||||
| -rw-r--r-- | drivers/usb/gadget/at91_udc.c | 9 | ||||
| -rw-r--r-- | drivers/usb/gadget/r8a66597-udc.c | 1 |
8 files changed, 30 insertions, 37 deletions
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index a42c466f7092..6da962c9b21c 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
| @@ -1423,6 +1423,8 @@ static void release_one_tty(struct work_struct *work) | |||
| 1423 | list_del_init(&tty->tty_files); | 1423 | list_del_init(&tty->tty_files); |
| 1424 | file_list_unlock(); | 1424 | file_list_unlock(); |
| 1425 | 1425 | ||
| 1426 | put_pid(tty->pgrp); | ||
| 1427 | put_pid(tty->session); | ||
| 1426 | free_tty_struct(tty); | 1428 | free_tty_struct(tty); |
| 1427 | } | 1429 | } |
| 1428 | 1430 | ||
diff --git a/drivers/hid/hid-gyration.c b/drivers/hid/hid-gyration.c index cab13e8c7d29..62416e6baeca 100644 --- a/drivers/hid/hid-gyration.c +++ b/drivers/hid/hid-gyration.c | |||
| @@ -53,10 +53,13 @@ static int gyration_input_mapping(struct hid_device *hdev, struct hid_input *hi, | |||
| 53 | static int gyration_event(struct hid_device *hdev, struct hid_field *field, | 53 | static int gyration_event(struct hid_device *hdev, struct hid_field *field, |
| 54 | struct hid_usage *usage, __s32 value) | 54 | struct hid_usage *usage, __s32 value) |
| 55 | { | 55 | { |
| 56 | struct input_dev *input = field->hidinput->input; | 56 | |
| 57 | if (!(hdev->claimed & HID_CLAIMED_INPUT) || !field->hidinput) | ||
| 58 | return 0; | ||
| 57 | 59 | ||
| 58 | if ((usage->hid & HID_USAGE_PAGE) == HID_UP_GENDESK && | 60 | if ((usage->hid & HID_USAGE_PAGE) == HID_UP_GENDESK && |
| 59 | (usage->hid & 0xff) == 0x82) { | 61 | (usage->hid & 0xff) == 0x82) { |
| 62 | struct input_dev *input = field->hidinput->input; | ||
| 60 | input_event(input, usage->type, usage->code, 1); | 63 | input_event(input, usage->type, usage->code, 1); |
| 61 | input_sync(input); | 64 | input_sync(input); |
| 62 | input_event(input, usage->type, usage->code, 0); | 65 | input_event(input, usage->type, usage->code, 0); |
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c index 928943c7ce9a..e71e0057284e 100644 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c | |||
| @@ -60,6 +60,7 @@ static const struct hid_blacklist { | |||
| 60 | { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET }, | 60 | { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET }, |
| 61 | { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET }, | 61 | { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET }, |
| 62 | { USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS, HID_QUIRK_NOGET }, | 62 | { USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS, HID_QUIRK_NOGET }, |
| 63 | { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN, HID_QUIRK_NOGET }, | ||
| 63 | { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET }, | 64 | { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET }, |
| 64 | { USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD, HID_QUIRK_NOGET }, | 65 | { USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD, HID_QUIRK_NOGET }, |
| 65 | { USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_PF1209, HID_QUIRK_MULTI_INPUT }, | 66 | { USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_PF1209, HID_QUIRK_MULTI_INPUT }, |
diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c index fcb6ec1af173..72450237a0f4 100644 --- a/drivers/misc/kgdbts.c +++ b/drivers/misc/kgdbts.c | |||
| @@ -295,6 +295,10 @@ static int check_and_rewind_pc(char *put_str, char *arg) | |||
| 295 | /* On x86 a breakpoint stop requires it to be decremented */ | 295 | /* On x86 a breakpoint stop requires it to be decremented */ |
| 296 | if (addr + 1 == kgdbts_regs.ip) | 296 | if (addr + 1 == kgdbts_regs.ip) |
| 297 | offset = -1; | 297 | offset = -1; |
| 298 | #elif defined(CONFIG_SUPERH) | ||
| 299 | /* On SUPERH a breakpoint stop requires it to be decremented */ | ||
| 300 | if (addr + 2 == kgdbts_regs.pc) | ||
| 301 | offset = -2; | ||
| 298 | #endif | 302 | #endif |
| 299 | if (strcmp(arg, "silent") && | 303 | if (strcmp(arg, "silent") && |
| 300 | instruction_pointer(&kgdbts_regs) + offset != addr) { | 304 | instruction_pointer(&kgdbts_regs) + offset != addr) { |
| @@ -305,6 +309,8 @@ static int check_and_rewind_pc(char *put_str, char *arg) | |||
| 305 | #ifdef CONFIG_X86 | 309 | #ifdef CONFIG_X86 |
| 306 | /* On x86 adjust the instruction pointer if needed */ | 310 | /* On x86 adjust the instruction pointer if needed */ |
| 307 | kgdbts_regs.ip += offset; | 311 | kgdbts_regs.ip += offset; |
| 312 | #elif defined(CONFIG_SUPERH) | ||
| 313 | kgdbts_regs.pc += offset; | ||
| 308 | #endif | 314 | #endif |
| 309 | return 0; | 315 | return 0; |
| 310 | } | 316 | } |
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 406757a9d7ea..dee4fb56b094 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c | |||
| @@ -376,8 +376,11 @@ unsigned long __init unflatten_dt_node(unsigned long mem, | |||
| 376 | if (!np->type) | 376 | if (!np->type) |
| 377 | np->type = "<NULL>"; | 377 | np->type = "<NULL>"; |
| 378 | } | 378 | } |
| 379 | while (tag == OF_DT_BEGIN_NODE) { | 379 | while (tag == OF_DT_BEGIN_NODE || tag == OF_DT_NOP) { |
| 380 | mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize); | 380 | if (tag == OF_DT_NOP) |
| 381 | *p += 4; | ||
| 382 | else | ||
| 383 | mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize); | ||
| 381 | tag = be32_to_cpup((__be32 *)(*p)); | 384 | tag = be32_to_cpup((__be32 *)(*p)); |
| 382 | } | 385 | } |
| 383 | if (tag != OF_DT_END_NODE) { | 386 | if (tag != OF_DT_END_NODE) { |
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 3ea0b29c0104..27c0e6eb7136 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
| @@ -2123,6 +2123,9 @@ static void __devinit quirk_disable_msi(struct pci_dev *dev) | |||
| 2123 | } | 2123 | } |
| 2124 | } | 2124 | } |
| 2125 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_msi); | 2125 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_msi); |
| 2126 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, 0x9602, quirk_disable_msi); | ||
| 2127 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASUSTEK, 0x9602, quirk_disable_msi); | ||
| 2128 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AI, 0x9602, quirk_disable_msi); | ||
| 2126 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, 0xa238, quirk_disable_msi); | 2129 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, 0xa238, quirk_disable_msi); |
| 2127 | 2130 | ||
| 2128 | /* Go through the list of Hypertransport capabilities and | 2131 | /* Go through the list of Hypertransport capabilities and |
| @@ -2495,39 +2498,6 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4374, | |||
| 2495 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4375, | 2498 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4375, |
| 2496 | quirk_msi_intx_disable_bug); | 2499 | quirk_msi_intx_disable_bug); |
| 2497 | 2500 | ||
| 2498 | /* | ||
| 2499 | * MSI does not work with the AMD RS780/RS880 internal graphics and HDMI audio | ||
| 2500 | * devices unless the BIOS has initialized the nb_cntl.strap_msi_enable bit. | ||
| 2501 | */ | ||
| 2502 | static void __init rs780_int_gfx_disable_msi(struct pci_dev *int_gfx_bridge) | ||
| 2503 | { | ||
| 2504 | u32 nb_cntl; | ||
| 2505 | |||
| 2506 | if (!int_gfx_bridge->subordinate) | ||
| 2507 | return; | ||
| 2508 | |||
| 2509 | pci_bus_write_config_dword(int_gfx_bridge->bus, PCI_DEVFN(0, 0), | ||
| 2510 | 0x60, 0); | ||
| 2511 | pci_bus_read_config_dword(int_gfx_bridge->bus, PCI_DEVFN(0, 0), | ||
| 2512 | 0x64, &nb_cntl); | ||
| 2513 | |||
| 2514 | if (!(nb_cntl & BIT(10))) { | ||
| 2515 | dev_warn(&int_gfx_bridge->dev, | ||
| 2516 | FW_WARN "RS780: MSI for internal graphics disabled\n"); | ||
| 2517 | int_gfx_bridge->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MSI; | ||
| 2518 | } | ||
| 2519 | } | ||
| 2520 | |||
| 2521 | #define PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX 0x9602 | ||
| 2522 | |||
| 2523 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, | ||
| 2524 | PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX, | ||
| 2525 | rs780_int_gfx_disable_msi); | ||
| 2526 | /* wrong vendor ID on M4A785TD motherboard: */ | ||
| 2527 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASUSTEK, | ||
| 2528 | PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX, | ||
| 2529 | rs780_int_gfx_disable_msi); | ||
| 2530 | |||
| 2531 | #endif /* CONFIG_PCI_MSI */ | 2501 | #endif /* CONFIG_PCI_MSI */ |
| 2532 | 2502 | ||
| 2533 | #ifdef CONFIG_PCI_IOV | 2503 | #ifdef CONFIG_PCI_IOV |
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index 12ac9cd32a07..df1bae9b048e 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c | |||
| @@ -1370,6 +1370,12 @@ static irqreturn_t at91_udc_irq (int irq, void *_udc) | |||
| 1370 | { | 1370 | { |
| 1371 | struct at91_udc *udc = _udc; | 1371 | struct at91_udc *udc = _udc; |
| 1372 | u32 rescans = 5; | 1372 | u32 rescans = 5; |
| 1373 | int disable_clock = 0; | ||
| 1374 | |||
| 1375 | if (!udc->clocked) { | ||
| 1376 | clk_on(udc); | ||
| 1377 | disable_clock = 1; | ||
| 1378 | } | ||
| 1373 | 1379 | ||
| 1374 | while (rescans--) { | 1380 | while (rescans--) { |
| 1375 | u32 status; | 1381 | u32 status; |
| @@ -1458,6 +1464,9 @@ static irqreturn_t at91_udc_irq (int irq, void *_udc) | |||
| 1458 | } | 1464 | } |
| 1459 | } | 1465 | } |
| 1460 | 1466 | ||
| 1467 | if (disable_clock) | ||
| 1468 | clk_off(udc); | ||
| 1469 | |||
| 1461 | return IRQ_HANDLED; | 1470 | return IRQ_HANDLED; |
| 1462 | } | 1471 | } |
| 1463 | 1472 | ||
diff --git a/drivers/usb/gadget/r8a66597-udc.c b/drivers/usb/gadget/r8a66597-udc.c index 5e13d23b5f0c..8b45145b9136 100644 --- a/drivers/usb/gadget/r8a66597-udc.c +++ b/drivers/usb/gadget/r8a66597-udc.c | |||
| @@ -23,7 +23,6 @@ | |||
| 23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
| 24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
| 25 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
| 26 | #include <linux/err.h> | ||
| 27 | #include <linux/io.h> | 26 | #include <linux/io.h> |
| 28 | #include <linux/platform_device.h> | 27 | #include <linux/platform_device.h> |
| 29 | #include <linux/clk.h> | 28 | #include <linux/clk.h> |
