Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Linus Torvalds [Mon, 1 Mar 2010 18:38:09 +0000 (10:38 -0800)]
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (62 commits)
  Input: atkbd - release previously reserved keycodes 248 - 254
  Input: add KEY_WPS_BUTTON definition
  Input: ads7846 - add regulator support
  Input: winbond-cir - fix suspend/resume
  Input: gamecon - use pr_err() and friends
  Input: gamecon - constify some of the setup structures
  Input: gamecon - simplify pad type handling
  Input: gamecon - simplify coordinate calculation for PSX
  Input: gamecon - fix some formatting issues
  Input: gamecon - add rumble support for N64 pads
  Input: wacom - add device type to device name string
  Input: s3c24xx_ts - report touch only when stylus is down
  Input: s3c24xx_ts - re-enable IRQ on resume
  Input: wacom - constify product features data
  Input: wacom - use per-device instance of wacom_features
  Input: sh_keysc - enable building on SH-Mobile ARM
  Input: wacom - get features from driver info
  Input: rotary-encoder - set gpio direction for each requested gpio
  Input: sh_keysc - update the driver with mode 6
  Input: sh_keysc - switch to using bitmaps
  ...

1  2 
Documentation/feature-removal-schedule.txt
include/linux/input.h

@@@ -6,6 -6,21 +6,6 @@@ be removed from this file
  
  ---------------------------
  
 -What: USER_SCHED
 -When: 2.6.34
 -
 -Why:  USER_SCHED was implemented as a proof of concept for group scheduling.
 -      The effect of USER_SCHED can already be achieved from userspace with
 -      the help of libcgroup. The removal of USER_SCHED will also simplify
 -      the scheduler code with the removal of one major ifdef. There are also
 -      issues USER_SCHED has with USER_NS. A decision was taken not to fix
 -      those and instead remove USER_SCHED. Also new group scheduling
 -      features will not be implemented for USER_SCHED.
 -
 -Who:  Dhaval Giani <dhaval@linux.vnet.ibm.com>
 -
 ----------------------------
 -
  What: PRISM54
  When: 2.6.34
  
@@@ -49,17 -64,6 +49,17 @@@ Who:        Robin Getz <rgetz@blackfin.uclinux
  
  ---------------------------
  
 +What: Deprecated snapshot ioctls
 +When: 2.6.36
 +
 +Why:  The ioctls in kernel/power/user.c were marked as deprecated long time
 +      ago. Now they notify users about that so that they need to replace
 +      their userspace. After some more time, remove them completely.
 +
 +Who:  Jiri Slaby <jirislaby@gmail.com>
 +
 +---------------------------
 +
  What: The ieee80211_regdom module parameter
  When: March 2010 / desktop catchup
  
@@@ -538,3 -542,26 +538,26 @@@ Why:     Duplicate functionality with the g
        sensors) wich are also supported by the gspca_zc3xx driver
        (which supports 53 USB-ID's in total)
  Who:  Hans de Goede <hdegoede@redhat.com>
+ ----------------------------
+ What: corgikbd, spitzkbd, tosakbd driver
+ When: 2.6.35
+ Files:        drivers/input/keyboard/{corgi,spitz,tosa}kbd.c
+ Why:  We now have a generic GPIO based matrix keyboard driver that
+       are fully capable of handling all the keys on these devices.
+       The original drivers manipulate the GPIO registers directly
+       and so are difficult to maintain.
+ Who:  Eric Miao <eric.y.miao@gmail.com>
+ ----------------------------
+ What: corgi_ssp and corgi_ts driver
+ When: 2.6.35
+ Files:        arch/arm/mach-pxa/corgi_ssp.c, drivers/input/touchscreen/corgi_ts.c
+ Why:  The corgi touchscreen is now deprecated in favour of the generic
+       ads7846.c driver. The noise reduction technique used in corgi_ts.c,
+       that's to wait till vsync before ADC sampling, is also integrated into
+       ads7846 driver now. Provided that the original driver is not generic
+       and is difficult to maintain, it will be removed later.
+ Who:  Eric Miao <eric.y.miao@gmail.com>
diff --combined include/linux/input.h
@@@ -378,7 -378,7 +378,7 @@@ struct input_absinfo 
  #define KEY_WIMAX             246
  #define KEY_RFKILL            247     /* Key that controls all radios */
  
- /* Range 248 - 255 is reserved for special needs of AT keyboard driver */
+ /* Code 255 is reserved for special needs of AT keyboard driver */
  
  #define BTN_MISC              0x100
  #define BTN_0                 0x100
  #define KEY_NUMERIC_POUND     0x20b
  
  #define KEY_CAMERA_FOCUS      0x210
+ #define KEY_WPS_BUTTON                0x211   /* WiFi Protected Setup key */
  
 +#define BTN_TRIGGER_HAPPY             0x2c0
 +#define BTN_TRIGGER_HAPPY1            0x2c0
 +#define BTN_TRIGGER_HAPPY2            0x2c1
 +#define BTN_TRIGGER_HAPPY3            0x2c2
 +#define BTN_TRIGGER_HAPPY4            0x2c3
 +#define BTN_TRIGGER_HAPPY5            0x2c4
 +#define BTN_TRIGGER_HAPPY6            0x2c5
 +#define BTN_TRIGGER_HAPPY7            0x2c6
 +#define BTN_TRIGGER_HAPPY8            0x2c7
 +#define BTN_TRIGGER_HAPPY9            0x2c8
 +#define BTN_TRIGGER_HAPPY10           0x2c9
 +#define BTN_TRIGGER_HAPPY11           0x2ca
 +#define BTN_TRIGGER_HAPPY12           0x2cb
 +#define BTN_TRIGGER_HAPPY13           0x2cc
 +#define BTN_TRIGGER_HAPPY14           0x2cd
 +#define BTN_TRIGGER_HAPPY15           0x2ce
 +#define BTN_TRIGGER_HAPPY16           0x2cf
 +#define BTN_TRIGGER_HAPPY17           0x2d0
 +#define BTN_TRIGGER_HAPPY18           0x2d1
 +#define BTN_TRIGGER_HAPPY19           0x2d2
 +#define BTN_TRIGGER_HAPPY20           0x2d3
 +#define BTN_TRIGGER_HAPPY21           0x2d4
 +#define BTN_TRIGGER_HAPPY22           0x2d5
 +#define BTN_TRIGGER_HAPPY23           0x2d6
 +#define BTN_TRIGGER_HAPPY24           0x2d7
 +#define BTN_TRIGGER_HAPPY25           0x2d8
 +#define BTN_TRIGGER_HAPPY26           0x2d9
 +#define BTN_TRIGGER_HAPPY27           0x2da
 +#define BTN_TRIGGER_HAPPY28           0x2db
 +#define BTN_TRIGGER_HAPPY29           0x2dc
 +#define BTN_TRIGGER_HAPPY30           0x2dd
 +#define BTN_TRIGGER_HAPPY31           0x2de
 +#define BTN_TRIGGER_HAPPY32           0x2df
 +#define BTN_TRIGGER_HAPPY33           0x2e0
 +#define BTN_TRIGGER_HAPPY34           0x2e1
 +#define BTN_TRIGGER_HAPPY35           0x2e2
 +#define BTN_TRIGGER_HAPPY36           0x2e3
 +#define BTN_TRIGGER_HAPPY37           0x2e4
 +#define BTN_TRIGGER_HAPPY38           0x2e5
 +#define BTN_TRIGGER_HAPPY39           0x2e6
 +#define BTN_TRIGGER_HAPPY40           0x2e7
 +
  /* We avoid low common keys in module aliases so they don't get huge. */
  #define KEY_MIN_INTERESTING   KEY_MUTE
  #define KEY_MAX                       0x2ff
@@@ -1242,6 -1201,10 +1243,10 @@@ struct input_handle
   * @event: event handler. This method is being called by input core with
   *    interrupts disabled and dev->event_lock spinlock held and so
   *    it may not sleep
+  * @filter: similar to @event; separates normal event handlers from
+  *    "filters".
+  * @match: called after comparing device's id with handler's id_table
+  *    to perform fine-grained matching between device and handler
   * @connect: called when attaching a handler to an input device
   * @disconnect: disconnects a handler from input device
   * @start: starts handler for given handle. This function is called by
   * @name: name of the handler, to be shown in /proc/bus/input/handlers
   * @id_table: pointer to a table of input_device_ids this driver can
   *    handle
-  * @blacklist: pointer to a table of input_device_ids this driver should
-  *    ignore even if they match @id_table
   * @h_list: list of input handles associated with the handler
   * @node: for placing the driver onto input_handler_list
   *
   * same time. All of them will get their copy of input event generated by
   * the device.
   *
+  * The very same structure is used to implement input filters. Input core
+  * allows filters to run first and will not pass event to regular handlers
+  * if any of the filters indicate that the event should be filtered (by
+  * returning %true from their filter() method).
+  *
   * Note that input core serializes calls to connect() and disconnect()
   * methods.
   */
@@@ -1271,6 -1237,8 +1279,8 @@@ struct input_handler 
        void *private;
  
        void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
+       bool (*filter)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
+       bool (*match)(struct input_handler *handler, struct input_dev *dev);
        int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id);
        void (*disconnect)(struct input_handle *handle);
        void (*start)(struct input_handle *handle);
        const char *name;
  
        const struct input_device_id *id_table;
-       const struct input_device_id *blacklist;
  
        struct list_head        h_list;
        struct list_head        node;