]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
Merge tag 'v5.1' into next
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 10 May 2019 18:43:46 +0000 (11:43 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 10 May 2019 18:43:46 +0000 (11:43 -0700)
Sync up with mainline to bring in the latest APIs.

1  2 
Documentation/devicetree/bindings/vendor-prefixes.txt
drivers/hid/hid-input.c
drivers/input/keyboard/Kconfig
drivers/input/keyboard/snvs_pwrkey.c
drivers/input/misc/Kconfig
drivers/input/misc/Makefile
drivers/input/touchscreen/Kconfig
include/uapi/linux/input-event-codes.h

index 51f99549161edf72f6a58bbece2ae190db0aa7d2,8162b0eb4b5063971f790c52dc8ac7c0857654cd..804bce168f49cd925746100bbab5917c312d5122
@@@ -24,6 -24,7 +24,7 @@@ amarula       Amarula Solution
  amazon        Amazon.com, Inc.
  amcc  Applied Micro Circuits Corporation (APM, formally AMCC)
  amd   Advanced Micro Devices (AMD), Inc.
+ amediatech    Shenzhen Amediatech Technology Co., Ltd
  amlogic       Amlogic, Inc.
  ampire        Ampire Co., Ltd.
  ams   AMS AG
@@@ -53,7 -54,6 +54,7 @@@ avic  Shanghai AVIC Optoelectronics Co.
  avnet Avnet, Inc.
  axentia       Axentia Technologies AB
  axis  Axis Communications AB
 +azoteq        Azoteq (Pty) Ltd
  bananapi BIPAI KEJI LIMITED
  bhf   Beckhoff Automation GmbH & Co. KG
  bitmain       Bitmain Technologies
@@@ -66,8 -66,10 +67,10 @@@ bticino Bticino Internationa
  calxeda       Calxeda
  capella       Capella Microsystems, Inc
  cascoda       Cascoda, Ltd.
+ catalyst      Catalyst Semiconductor, Inc.
  cavium        Cavium, Inc.
  cdns  Cadence Design Systems Inc.
+ cdtech        CDTech(H.K.) Electronics Limited
  ceva  Ceva, Inc.
  chipidea      Chipidea, Inc
  chipone               ChipOne
@@@ -108,12 -110,15 +111,15 @@@ dongwoon        Dongwoon Anatec
  dptechnics    DPTechnics
  dragino       Dragino Technology Co., Limited
  ea    Embedded Artists AB
+ ebs-systart EBS-SYSTART GmbH
  ebv   EBV Elektronik
  eckelmann     Eckelmann AG
  edt   Emerging Display Technologies
  eeti  eGalax_eMPIA Technology Inc
  elan  Elan Microelectronic Corp.
+ elgin Elgin S/A.
  embest        Shenzhen Embest Technology Co., Ltd.
+ emlid Emlid, Ltd.
  emmicro       EM Microelectronic
  emtrion       emtrion GmbH
  endless       Endless Mobile, Inc.
@@@ -135,11 -140,13 +141,13 @@@ fairphone       Fairphone B.V
  faraday       Faraday Technology Corporation
  fastrax       Fastrax Oy
  fcs   Fairchild Semiconductor
+ feiyang       Shenzhen Fly Young Technology Co.,LTD.
  firefly       Firefly
  focaltech     FocalTech Systems Co.,Ltd
  friendlyarm   Guangzhou FriendlyARM Computer Tech Co., Ltd
  fsl   Freescale Semiconductor
  fujitsu       Fujitsu Ltd.
+ gateworks     Gateworks Corporation
  gcw Game Consoles Worldwide
  ge    General Electric Company
  geekbuying    GeekBuying
@@@ -149,6 -156,7 +157,7 @@@ geniatech  Geniatech, Inc
  giantec       Giantec Semiconductor, Inc.
  giantplus     Giantplus Technology Co., Ltd.
  globalscale   Globalscale Technologies, Inc.
+ globaltop     GlobalTop Technology, Inc.
  gmt   Global Mixed-mode Technology, Inc.
  goodix        Shenzhen Huiding Technology Co., Ltd.
  google        Google, Inc.
@@@ -171,6 -179,7 +180,7 @@@ holtek     Holtek Semiconductor, Inc
  hwacom        HwaCom Systems Inc.
  i2se  I2SE GmbH
  ibm   International Business Machines (IBM)
+ icplus        IC Plus Corp.
  idt   Integrated Device Technologies, Inc.
  ifi   Ingenieurburo Fur Ic-Technologie (I/F/I)
  ilitek        ILI Technology Corporation (ILITEK)
@@@ -209,6 -218,7 +219,7 @@@ laird      Laird PL
  lantiq        Lantiq Semiconductor
  lattice       Lattice Semiconductor
  lego  LEGO Systems A/S
+ lemaker       Shenzhen LeMaker Technology Co., Ltd.
  lenovo        Lenovo Group Ltd.
  lg    LG Corporation
  libretech     Shenzhen Libre Technology Co., Ltd
@@@ -271,6 -281,7 +282,7 @@@ nintendo   Nintend
  nlt   NLT Technologies, Ltd.
  nokia Nokia
  nordic        Nordic Semiconductor
+ novtech NovTech, Inc.
  nutsboard     NutsBoard
  nuvoton       Nuvoton Technology Corporation
  nvd   New Vision Display
@@@ -295,15 -306,19 +307,19 @@@ ovti    OmniVision Technologie
  oxsemi        Oxford Semiconductor, Ltd.
  panasonic     Panasonic Corporation
  parade        Parade Technologies Inc.
+ pda   Precision Design Associates, Inc.
  pericom       Pericom Technology Inc.
  pervasive     Pervasive Displays, Inc.
+ phicomm PHICOMM Co., Ltd.
  phytec        PHYTEC Messtechnik GmbH
  picochip      Picochip Ltd
  pine64        Pine64
  pixcir  PIXCIR MICROELECTRONICS Co., Ltd
+ plantower Plantower Co., Ltd
  plathome      Plat'Home Co., Ltd.
  plda  PLDA
  plx   Broadcom Corporation (formerly PLX Technology)
+ pni   PNI Sensor Corporation
  portwell      Portwell Inc.
  poslab        Poslab Technology Co., Ltd.
  powervr       PowerVR (deprecated, use img)
@@@ -321,6 -336,7 +337,7 @@@ ralink     Mediatek/Ralink Technology Corp
  ramtron       Ramtron International
  raspberrypi   Raspberry Pi Foundation
  raydium       Raydium Semiconductor Corp.
+ rda   Unisoc Communications, Inc.
  realtek Realtek Semiconductor Corp.
  renesas       Renesas Electronics Corporation
  richtek       Richtek Technology Corporation
@@@ -385,6 -401,7 +402,7 @@@ tcl        Toby Churchill Ltd
  technexion    TechNexion
  technologic   Technologic Systems
  tempo Tempo Semiconductor
+ techstar      Shenzhen Techstar Electronics Co., Ltd.
  terasic       Terasic Inc.
  thine THine Electronics, Inc.
  ti    Texas Instruments
@@@ -416,6 -433,7 +434,7 @@@ vamrs      Vamrs Ltd
  variscite     Variscite Ltd.
  via   VIA Technologies, Inc.
  virtio        Virtual I/O Device Specification, developed by the OASIS consortium
+ vishay        Vishay Intertechnology, Inc
  vitesse       Vitesse Semiconductor Corporation
  vivante       Vivante Corporation
  vocore VoCore Studio
@@@ -424,6 -442,7 +443,7 @@@ vot        Vision Optical Technology Co., Ltd
  wd    Western Digital Corp.
  wetek WeTek Electronics, limited.
  wexler        Wexler
+ whwave  Shenzhen whwave Electronics, Inc.
  wi2wi Wi2Wi, Inc.
  winbond Winbond Electronics corp.
  winstar       Winstar Display Corp.
diff --combined drivers/hid/hid-input.c
index 757fb1bf4cfd6a7595dc685a2d5dc07243b8edda,b607286a0bc82f360a133b5dce204a8f2441ff5c..0579b8d3f9124db70c1cdecbb53133938fbe7b6f
@@@ -328,6 -328,9 +328,9 @@@ static const struct hid_device_id hid_b
        { HID_USB_DEVICE(USB_VENDOR_ID_SYMBOL,
                USB_DEVICE_ID_SYMBOL_SCANNER_3),
          HID_BATTERY_QUIRK_IGNORE },
+       { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ASUSTEK,
+               USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD),
+         HID_BATTERY_QUIRK_IGNORE },
        {}
  };
  
@@@ -677,6 -680,14 +680,14 @@@ static void hidinput_configure_usage(st
                        break;
                }
  
+               if ((usage->hid & 0xf0) == 0xb0) {      /* SC - Display */
+                       switch (usage->hid & 0xf) {
+                       case 0x05: map_key_clear(KEY_SWITCHVIDEOMODE); break;
+                       default: goto ignore;
+                       }
+                       break;
+               }
                /*
                 * Some lazy vendors declare 255 usages for System Control,
                 * leading to the creation of ABS_X|Y axis and too many others.
                                map_abs_clear(usage->hid & 0xf);
                        break;
  
-               case HID_GD_SLIDER: case HID_GD_DIAL: case HID_GD_WHEEL:
+               case HID_GD_WHEEL:
+                       if (field->flags & HID_MAIN_ITEM_RELATIVE) {
+                               set_bit(REL_WHEEL, input->relbit);
+                               map_rel(REL_WHEEL_HI_RES);
+                       } else {
+                               map_abs(usage->hid & 0xf);
+                       }
+                       break;
+               case HID_GD_SLIDER: case HID_GD_DIAL:
                        if (field->flags & HID_MAIN_ITEM_RELATIVE)
                                map_rel(usage->hid & 0xf);
                        else
                case 0x06a: map_key_clear(KEY_GREEN);           break;
                case 0x06b: map_key_clear(KEY_BLUE);            break;
                case 0x06c: map_key_clear(KEY_YELLOW);          break;
-               case 0x06d: map_key_clear(KEY_ZOOM);            break;
+               case 0x06d: map_key_clear(KEY_ASPECT_RATIO);    break;
  
                case 0x06f: map_key_clear(KEY_BRIGHTNESSUP);            break;
                case 0x070: map_key_clear(KEY_BRIGHTNESSDOWN);          break;
                case 0x074: map_key_clear(KEY_BRIGHTNESS_MAX);          break;
                case 0x075: map_key_clear(KEY_BRIGHTNESS_AUTO);         break;
  
+               case 0x079: map_key_clear(KEY_KBDILLUMUP);      break;
+               case 0x07a: map_key_clear(KEY_KBDILLUMDOWN);    break;
+               case 0x07c: map_key_clear(KEY_KBDILLUMTOGGLE);  break;
                case 0x082: map_key_clear(KEY_VIDEO_NEXT);      break;
                case 0x083: map_key_clear(KEY_LAST);            break;
                case 0x084: map_key_clear(KEY_ENTER);           break;
                case 0x1b8: map_key_clear(KEY_VIDEO);           break;
                case 0x1bc: map_key_clear(KEY_MESSENGER);       break;
                case 0x1bd: map_key_clear(KEY_INFO);            break;
+               case 0x1cb: map_key_clear(KEY_ASSISTANT);       break;
                case 0x201: map_key_clear(KEY_NEW);             break;
                case 0x202: map_key_clear(KEY_OPEN);            break;
                case 0x203: map_key_clear(KEY_CLOSE);           break;
                case 0x22d: map_key_clear(KEY_ZOOMIN);          break;
                case 0x22e: map_key_clear(KEY_ZOOMOUT);         break;
                case 0x22f: map_key_clear(KEY_ZOOMRESET);       break;
+               case 0x232: map_key_clear(KEY_FULL_SCREEN);     break;
                case 0x233: map_key_clear(KEY_SCROLLUP);        break;
                case 0x234: map_key_clear(KEY_SCROLLDOWN);      break;
-               case 0x238: map_rel(REL_HWHEEL);                break;
+               case 0x238: /* AC Pan */
+                       set_bit(REL_HWHEEL, input->relbit);
+                       map_rel(REL_HWHEEL_HI_RES);
+                       break;
                case 0x23d: map_key_clear(KEY_EDIT);            break;
                case 0x25f: map_key_clear(KEY_CANCEL);          break;
                case 0x269: map_key_clear(KEY_INSERT);          break;
                case 0x28b: map_key_clear(KEY_FORWARDMAIL);     break;
                case 0x28c: map_key_clear(KEY_SEND);            break;
  
 +              case 0x29d: map_key_clear(KEY_KBD_LAYOUT_NEXT); break;
 +
                case 0x2c7: map_key_clear(KEY_KBDINPUTASSIST_PREV);             break;
                case 0x2c8: map_key_clear(KEY_KBDINPUTASSIST_NEXT);             break;
                case 0x2c9: map_key_clear(KEY_KBDINPUTASSIST_PREVGROUP);                break;
                case 0x2cb: map_key_clear(KEY_KBDINPUTASSIST_ACCEPT);   break;
                case 0x2cc: map_key_clear(KEY_KBDINPUTASSIST_CANCEL);   break;
  
+               case 0x29f: map_key_clear(KEY_SCALE);           break;
                default: map_key_clear(KEY_UNKNOWN);
                }
                break;
@@@ -1202,6 -1230,38 +1232,38 @@@ ignore
  
  }
  
+ static void hidinput_handle_scroll(struct hid_usage *usage,
+                                  struct input_dev *input,
+                                  __s32 value)
+ {
+       int code;
+       int hi_res, lo_res;
+       if (value == 0)
+               return;
+       if (usage->code == REL_WHEEL_HI_RES)
+               code = REL_WHEEL;
+       else
+               code = REL_HWHEEL;
+       /*
+        * Windows reports one wheel click as value 120. Where a high-res
+        * scroll wheel is present, a fraction of 120 is reported instead.
+        * Our REL_WHEEL_HI_RES axis does the same because all HW must
+        * adhere to the 120 expectation.
+        */
+       hi_res = value * 120/usage->resolution_multiplier;
+       usage->wheel_accumulated += hi_res;
+       lo_res = usage->wheel_accumulated/120;
+       if (lo_res)
+               usage->wheel_accumulated -= lo_res * 120;
+       input_event(input, EV_REL, code, lo_res);
+       input_event(input, EV_REL, usage->code, hi_res);
+ }
  void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, __s32 value)
  {
        struct input_dev *input;
        if ((usage->type == EV_KEY) && (usage->code == 0)) /* Key 0 is "unassigned", not KEY_UNKNOWN */
                return;
  
+       if ((usage->type == EV_REL) && (usage->code == REL_WHEEL_HI_RES ||
+                                       usage->code == REL_HWHEEL_HI_RES)) {
+               hidinput_handle_scroll(usage, input, value);
+               return;
+       }
        if ((usage->type == EV_ABS) && (field->flags & HID_MAIN_ITEM_RELATIVE) &&
                        (usage->code == ABS_VOLUME)) {
                int count = abs(value);
@@@ -1491,6 -1557,58 +1559,58 @@@ static void hidinput_close(struct input
        hid_hw_close(hid);
  }
  
+ static void hidinput_change_resolution_multipliers(struct hid_device *hid)
+ {
+       struct hid_report_enum *rep_enum;
+       struct hid_report *rep;
+       struct hid_usage *usage;
+       int i, j;
+       rep_enum = &hid->report_enum[HID_FEATURE_REPORT];
+       list_for_each_entry(rep, &rep_enum->report_list, list) {
+               bool update_needed = false;
+               if (rep->maxfield == 0)
+                       continue;
+               /*
+                * If we have more than one feature within this report we
+                * need to fill in the bits from the others before we can
+                * overwrite the ones for the Resolution Multiplier.
+                */
+               if (rep->maxfield > 1) {
+                       hid_hw_request(hid, rep, HID_REQ_GET_REPORT);
+                       hid_hw_wait(hid);
+               }
+               for (i = 0; i < rep->maxfield; i++) {
+                       __s32 logical_max = rep->field[i]->logical_maximum;
+                       /* There is no good reason for a Resolution
+                        * Multiplier to have a count other than 1.
+                        * Ignore that case.
+                        */
+                       if (rep->field[i]->report_count != 1)
+                               continue;
+                       for (j = 0; j < rep->field[i]->maxusage; j++) {
+                               usage = &rep->field[i]->usage[j];
+                               if (usage->hid != HID_GD_RESOLUTION_MULTIPLIER)
+                                       continue;
+                               *rep->field[i]->value = logical_max;
+                               update_needed = true;
+                       }
+               }
+               if (update_needed)
+                       hid_hw_request(hid, rep, HID_REQ_SET_REPORT);
+       }
+       /* refresh our structs */
+       hid_setup_resolution_multiplier(hid);
+ }
  static void report_features(struct hid_device *hid)
  {
        struct hid_driver *drv = hid->driver;
@@@ -1784,6 -1902,8 +1904,8 @@@ int hidinput_connect(struct hid_device 
                }
        }
  
+       hidinput_change_resolution_multipliers(hid);
        list_for_each_entry_safe(hidinput, next, &hid->inputs, list) {
                if (drv->input_configured &&
                    drv->input_configured(hid, hidinput))
@@@ -1842,4 -1962,3 +1964,3 @@@ void hidinput_disconnect(struct hid_dev
        cancel_work_sync(&hid->led_work);
  }
  EXPORT_SYMBOL_GPL(hidinput_disconnect);
index 08aba5e7cd93547c6b0b90e37f003e43945cc4e9,52d7f55fca329c09c9788cb8bcd91509a5f07426..1fe039d7326bcf47fdb1fe27b5466d9496e2e88a
@@@ -137,17 -137,6 +137,17 @@@ config KEYBOARD_ATKBD_RDI_KEYCODE
          right-hand column will be interpreted as the key shown in the
          left-hand column.
  
 +config KEYBOARD_QT1050
 +      tristate "Microchip AT42QT1050 Touch Sensor Chip"
 +      depends on I2C
 +      select REGMAP_I2C
 +      help
 +        Say Y here if you want to use Microchip AT42QT1050 QTouch
 +        Sensor chip as input device.
 +
 +        To compile this driver as a module, choose M here:
 +        the module will be called qt1050
 +
  config KEYBOARD_QT1070
         tristate "Atmel AT42QT1070 Touch Sensor Chip"
         depends on I2C
@@@ -431,7 -420,7 +431,7 @@@ config KEYBOARD_MPR12
  
  config KEYBOARD_SNVS_PWRKEY
        tristate "IMX SNVS Power Key Driver"
-       depends on SOC_IMX6SX
+       depends on ARCH_MXC || COMPILE_TEST
        depends on OF
        help
          This is the snvs powerkey driver for the Freescale i.MX application
index c8d748477bd4a8a490beecd28ee9f953865f3a93,4c67cf30a5d9ab14bff5f5c53d289ba347d241f4..5342d8d45f811b399bb740ec4a0158d50c502c44
@@@ -15,7 -15,6 +15,7 @@@
  #include <linux/of.h>
  #include <linux/of_address.h>
  #include <linux/platform_device.h>
 +#include <linux/pm_wakeirq.h>
  #include <linux/mfd/syscon.h>
  #include <linux/regmap.h>
  
@@@ -149,6 -148,9 +149,9 @@@ static int imx_snvs_pwrkey_probe(struc
                return error;
        }
  
+       pdata->input = input;
+       platform_set_drvdata(pdev, pdata);
        error = devm_request_irq(&pdev->dev, pdata->irq,
                               imx_snvs_pwrkey_interrupt,
                               0, pdev->name, pdev);
                return error;
        }
  
-       pdata->input = input;
-       platform_set_drvdata(pdev, pdata);
        device_init_wakeup(&pdev->dev, pdata->wakeup);
 -
 -      return 0;
 -}
 -
 -static int __maybe_unused imx_snvs_pwrkey_suspend(struct device *dev)
 -{
 -      struct platform_device *pdev = to_platform_device(dev);
 -      struct pwrkey_drv_data *pdata = platform_get_drvdata(pdev);
 -
 -      if (device_may_wakeup(&pdev->dev))
 -              enable_irq_wake(pdata->irq);
 -
 -      return 0;
 -}
 -
 -static int __maybe_unused imx_snvs_pwrkey_resume(struct device *dev)
 -{
 -      struct platform_device *pdev = to_platform_device(dev);
 -      struct pwrkey_drv_data *pdata = platform_get_drvdata(pdev);
 -
 -      if (device_may_wakeup(&pdev->dev))
 -              disable_irq_wake(pdata->irq);
 +      error = dev_pm_set_wake_irq(&pdev->dev, pdata->irq);
 +      if (error)
 +              dev_err(&pdev->dev, "irq wake enable failed.\n");
  
        return 0;
  }
@@@ -181,9 -199,13 +181,9 @@@ static const struct of_device_id imx_sn
  };
  MODULE_DEVICE_TABLE(of, imx_snvs_pwrkey_ids);
  
 -static SIMPLE_DEV_PM_OPS(imx_snvs_pwrkey_pm_ops, imx_snvs_pwrkey_suspend,
 -                              imx_snvs_pwrkey_resume);
 -
  static struct platform_driver imx_snvs_pwrkey_driver = {
        .driver = {
                .name = "snvs_pwrkey",
 -              .pm     = &imx_snvs_pwrkey_pm_ops,
                .of_match_table = imx_snvs_pwrkey_ids,
        },
        .probe = imx_snvs_pwrkey_probe,
index 16f41eece6d232b89225e4185424560393ea68ca,e15ed1bb8558c69e2eda42507953e2e079e759d7..6dfe9e2fe5b1b8104c5c5639f6873790af2de8cf
@@@ -290,18 -290,6 +290,18 @@@ config INPUT_GPIO_DECODE
         To compile this driver as a module, choose M here: the module
         will be called gpio_decoder.
  
 +config INPUT_GPIO_VIBRA
 +      tristate "GPIO vibrator support"
 +      depends on GPIOLIB || COMPILE_TEST
 +      select INPUT_FF_MEMLESS
 +      help
 +        Say Y here to get support for GPIO based vibrator devices.
 +
 +        If unsure, say N.
 +
 +        To compile this driver as a module, choose M here: the module will be
 +        called gpio-vibra.
 +
  config INPUT_IXP4XX_BEEPER
        tristate "IXP4XX Beeper support"
        depends on ARCH_IXP4XX
@@@ -873,4 -861,15 +873,15 @@@ config INPUT_SC27XX_VIBR
          To compile this driver as a module, choose M here. The module will
          be called sc27xx_vibra.
  
+ config INPUT_STPMIC1_ONKEY
+       tristate "STPMIC1 PMIC Onkey support"
+       depends on MFD_STPMIC1
+       help
+         Say Y to enable support of onkey embedded into STPMIC1 PMIC. onkey
+         can be used to wakeup from low power modes and force a shut-down on
+         long press.
+         To compile this driver as a module, choose M here: the
+         module will be called stpmic1_onkey.
  endif
index d871991c2eeee1c35f28b2f9d41d014b84cf331c,b936c5b1d4ac6ac99f3f86614f886b2bd788637f..f38ebbdb05e2ed726727a0eef97f1af783dd38b6
@@@ -36,7 -36,6 +36,7 @@@ obj-$(CONFIG_INPUT_DRV2667_HAPTICS)   += 
  obj-$(CONFIG_INPUT_GP2A)              += gp2ap002a00f.o
  obj-$(CONFIG_INPUT_GPIO_BEEPER)               += gpio-beeper.o
  obj-$(CONFIG_INPUT_GPIO_DECODER)      += gpio_decoder.o
 +obj-$(CONFIG_INPUT_GPIO_VIBRA)                += gpio-vibra.o
  obj-$(CONFIG_INPUT_HISI_POWERKEY)     += hisi_powerkey.o
  obj-$(CONFIG_HP_SDC_RTC)              += hp_sdc_rtc.o
  obj-$(CONFIG_INPUT_IMS_PCU)           += ims-pcu.o
@@@ -73,6 -72,7 +73,7 @@@ obj-$(CONFIG_INPUT_SGI_BTNS)          += sgi_bt
  obj-$(CONFIG_INPUT_SIRFSOC_ONKEY)     += sirfsoc-onkey.o
  obj-$(CONFIG_INPUT_SOC_BUTTON_ARRAY)  += soc_button_array.o
  obj-$(CONFIG_INPUT_SPARCSPKR)         += sparcspkr.o
+ obj-$(CONFIG_INPUT_STPMIC1_ONKEY)     += stpmic1_onkey.o
  obj-$(CONFIG_INPUT_TPS65218_PWRBUTTON)        += tps65218-pwrbutton.o
  obj-$(CONFIG_INPUT_TWL4030_PWRBUTTON) += twl4030-pwrbutton.o
  obj-$(CONFIG_INPUT_TWL4030_VIBRA)     += twl4030-vibra.o
@@@ -83,3 -83,4 +84,4 @@@ obj-$(CONFIG_INPUT_WM831X_ON)         += wm831
  obj-$(CONFIG_INPUT_XEN_KBDDEV_FRONTEND)       += xen-kbdfront.o
  obj-$(CONFIG_INPUT_YEALINK)           += yealink.o
  obj-$(CONFIG_INPUT_IDEAPAD_SLIDEBAR)  += ideapad_slidebar.o
index d8337ed50af40043ba839ef304c4bfc976f87b71,7a4884ad198b8387f52dff71e4f4f2c1dfcf9a1c..a2029c3235af7e627ce7459fd6f7511ae7918c38
@@@ -698,7 -698,8 +698,8 @@@ config TOUCHSCREEN_EDT_FT5X0
  
  config TOUCHSCREEN_RASPBERRYPI_FW
        tristate "Raspberry Pi's firmware base touch screen support"
-       depends on RASPBERRYPI_FIRMWARE || COMPILE_TEST
+       depends on RASPBERRYPI_FIRMWARE || (RASPBERRYPI_FIRMWARE=n && COMPILE_TEST)
+       select INPUT_POLLDEV
        help
          Say Y here if you have the official Raspberry Pi 7 inch screen on
          your system.
@@@ -1311,14 -1312,4 +1312,14 @@@ config TOUCHSCREEN_ROHM_BU2102
          To compile this driver as a module, choose M here: the
          module will be called bu21023_ts.
  
 +config TOUCHSCREEN_IQS5XX
 +      tristate "Azoteq IQS550/572/525 trackpad/touchscreen controller"
 +      depends on I2C
 +      help
 +        Say Y to enable support for the Azoteq IQS550/572/525
 +        family of trackpad/touchscreen controllers.
 +
 +        To compile this driver as a module, choose M here: the
 +        module will be called iqs5xx.
 +
  endif
index 207eddd78ba7d981697747fb7cb88551338a940a,64cee116928ebd92d97acec08c273e02c89958ab..85387c76c24f384ac31a934ca14f0e76faf1ba3a
  #define KEY_TITLE             0x171
  #define KEY_SUBTITLE          0x172
  #define KEY_ANGLE             0x173
- #define KEY_ZOOM              0x174
+ #define KEY_FULL_SCREEN               0x174   /* AC View Toggle */
+ #define KEY_ZOOM              KEY_FULL_SCREEN
  #define KEY_MODE              0x175
  #define KEY_KEYBOARD          0x176
- #define KEY_SCREEN            0x177
+ #define KEY_ASPECT_RATIO      0x177   /* HUTRR37: Aspect */
+ #define KEY_SCREEN            KEY_ASPECT_RATIO
  #define KEY_PC                        0x178   /* Media Select Computer */
  #define KEY_TV                        0x179   /* Media Select TV */
  #define KEY_TV2                       0x17a   /* Media Select Cable */
  #define KEY_SCREENSAVER               0x245   /* AL Screen Saver */
  #define KEY_VOICECOMMAND              0x246   /* Listening Voice Command */
  #define KEY_ASSISTANT         0x247   /* AL Context-aware desktop assistant */
 +#define KEY_KBD_LAYOUT_NEXT   0x248   /* AC Next Keyboard Layout Select */
  
  #define KEY_BRIGHTNESS_MIN            0x250   /* Set Brightness to Minimum */
  #define KEY_BRIGHTNESS_MAX            0x251   /* Set Brightness to Maximum */
   * the situation described above.
   */
  #define REL_RESERVED          0x0a
+ #define REL_WHEEL_HI_RES      0x0b
+ #define REL_HWHEEL_HI_RES     0x0c
  #define REL_MAX                       0x0f
  #define REL_CNT                       (REL_MAX+1)