summaryrefslogtreecommitdiff
path: root/drivers/input/tablet
Commit message (Collapse)AuthorAge
* Input: wacom - add support for EMR on Cintiq 24HD touchJason Gerecke2012-08-21
| | | | | | | | | | Adds support for the EMR digitizer on the Cintiq 24HD touch. The EMR digitizer should work identically to that found on the Cintiq 24HD. The touch digitizer is a separate USB device similar to how we split apart some other devices. Signed-off-by: Jason Gerecke <killertofu@gmail.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
* Input: wacom - add support to Cintiq 22HDPing Cheng2012-07-24
| | | | | Signed-off-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
* Input: hanwang - add support for Art Master II tabletweixing2012-07-13
| | | | | | | This change adds support for old Hanwang Art master II tablet Signed-off-by: weixing <weixing@hanwang.com.cn> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
* Merge branch 'for-linus' to bring in change ensuring that drivers thatDmitry Torokhov2012-07-07
|\ | | | | | | use threaded IRQs use IRQF_ONESHOT.
| * Input: wacom - don't retrieve touch_max when it is predefinedPing Cheng2012-06-28
| | | | | | | | | | | | | | | | | | | | | | Some models, such as 0xE6, report more fingers than we process. Reported-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Ping Cheng <pingc@wacom.com> Tested-by: Nils Kanning <nils@kanning.de> Tested-by: Rafi Rubin <rafi@seas.upenn.edu> Reviewed-by: Jason Gerecke <killertofu@gmail.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
| * Input: wacom - fix retrieving touch_max bugPing Cheng2012-06-28
| | | | | | | | | | | | | | | | | | | | rep_data is not an array anymore, so taking it's address when passing to wacom_get_report() is wrong. Signed-off-by: Ping Cheng <pingc@wacom.com> Tested-by: Rafi Rubin <rafi@seas.upenn.edu> Reviewed-by: Jason Gerecke <killertofu@gmail.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
* | Merge commit 'v3.5-rc5' into nextDmitry Torokhov2012-07-04
|\ \
| * \ Merge branch 'for-linus' of ↵Linus Torvalds2012-05-24
| |\ \ | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Pull input layer updates from Dmitry Torokhov: - a bunch of new drivers (DA9052/53 touchscreenn controller, Synaptics Navpoint, LM8333 keypads, Wacom I2C touhscreen); - updates to existing touchpad drivers (ALPS, Sntelic); - Wacom driver now supports Intuos5; - device-tree bindings in numerous drivers; - other cleanups and fixes. Fix annoying conflict in drivers/input/tablet/wacom_wac.c that I think implies that the input layer device naming is broken, but let's see. I brough it up with Dmitry. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (57 commits) Input: matrix-keymap - fix building keymaps Input: spear-keyboard - document DT bindings Input: spear-keyboard - add device tree bindings Input: matrix-keymap - wire up device tree support Input: matrix-keymap - uninline and prepare for device tree support Input: adp5588 - add support for gpio names Input: omap-keypad - dynamically handle register offsets Input: synaptics - fix compile warning MAINTAINERS: adjust input-related patterns Input: ALPS - switch to using input_mt_report_finger_count Input: ALPS - add semi-MT support for v4 protocol Input: Add Synaptics NavPoint (PXA27x SSP/SPI) driver Input: atmel_mxt_ts - dump each message on just 1 line Input: atmel_mxt_ts - do not read extra (checksum) byte Input: atmel_mxt_ts - verify object size in mxt_write_object Input: atmel_mxt_ts - only allow root to update firmware Input: atmel_mxt_ts - use CONFIG_PM_SLEEP Input: sentelic - report device's production serial number Input: tl6040-vibra - Device Tree support Input: evdev - properly handle read/write with count 0 ...
| * | USB: input: wacom_sys.c: fix up dev_* messagesGreg Kroah-Hartman2012-05-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously I had made the struct device point to the input device, but after talking with Dmitry, he said that the USB device would make more sense for this driver to point to. So converted it to use that instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> CC: Ping Cheng <pingc@wacom.com> CC: Chris Bagwell <chris@cnpbagwell.com> CC: Eduard Hasenleithner <eduard@hasenleithner.at> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: input: kbtab.c: fix up dev_* messagesGreg Kroah-Hartman2012-05-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously I had made the struct device point to the input device, but after talking with Dmitry, he said that the USB device would make more sense for this driver to point to. So converted it to use that instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: input: gtco.c: fix up dev_* messagesGreg Kroah-Hartman2012-05-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously I had made the struct device point to the input device, but after talking with Dmitry, he said that the USB device would make more sense for this driver to point to. So converted it to use that instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: input: aiptek.c: fix up dev_* messagesGreg Kroah-Hartman2012-05-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously I had made the struct device point to the input device, but after talking with Dmitry, he said that the USB device would make more sense for this driver to point to. So converted it to use that instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> CC: Jesper Juhl <jj@chaosbits.net> CC: JJ Ding <dgdunix@gmail.com> CC: Edwin van Vliet <edwin@cheatah.nl> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: input: acecad.c: fix up dev_* messagesGreg Kroah-Hartman2012-05-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | Previously I had made the struct device point to the input device, but after talking with Dmitry, he said that the USB device would make more sense for this driver to point to. So converted it to use that instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: kbtab.c: remove dbg() usageGreg Kroah-Hartman2012-05-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | dbg() was a very old USB-specific macro that should no longer be used. This patch removes it from being used in the driver and uses dev_dbg() instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: gtco.c: remove dbg() usageGreg Kroah-Hartman2012-05-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | dbg() was a very old USB-specific macro that should no longer be used. This patch removes it from being used in the driver and uses dev_dbg() instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: aiptek.c: remove dbg() usageGreg Kroah-Hartman2012-05-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dbg() was a very old USB-specific macro that should no longer be used. This patch removes it from being used in the driver and uses dev_dbg() instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> CC: Jesper Juhl <jj@chaosbits.net> CC: JJ Ding <dgdunix@gmail.com> CC: Edwin van Vliet <edwin@cheatah.nl> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: acecad.c: remove dbg() usageGreg Kroah-Hartman2012-05-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | dbg() was a very old USB-specific macro that should no longer be used. This patch removes it from being used in the driver and uses dev_dbg() instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: wacom: remove dbg() usageGreg Kroah-Hartman2012-05-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dbg() was a very old USB-specific macro that should no longer be used. This patch removes it from being used in the driver and uses dev_dbg() instead. Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: Ping Cheng <pingc@wacom.com> Cc: Eduard Hasenleithner <eduard@hasenleithner.at> Cc: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: input: wacom_sys.c: fix up dev_err() usageGreg Kroah-Hartman2012-05-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We should always reference the input device for dev_err(), not the USB device. Fix up the places where I got this wrong. Reported-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> CC: Ping Cheng <pingc@wacom.com> CC: Chris Bagwell <chris@cnpbagwell.com> CC: Eduard Hasenleithner <eduard@hasenleithner.at> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: input: kbtab.c: fix up dev_err() usageGreg Kroah-Hartman2012-05-01
| | | | | | | | | | | | | | | | | | | | | | | | We should always reference the input device for dev_err(), not the USB device. Fix up the places where I got this wrong. Reported-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: input: gtco.c: fix up dev_err() usageGreg Kroah-Hartman2012-05-01
| | | | | | | | | | | | | | | | | | | | | | | | We should always reference the input device for dev_err(), not the USB device. Fix up the places where I got this wrong. Reported-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: input: aiptek.c: fix up dev_err() usageGreg Kroah-Hartman2012-05-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We should always reference the input device for dev_err(), not the USB device. Fix up the places where I got this wrong. Reported-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> CC: Jesper Juhl <jj@chaosbits.net> CC: JJ Ding <dgdunix@gmail.com> CC: Edwin van Vliet <edwin@cheatah.nl> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: input: acecad.c: fix up dev_err() usageGreg Kroah-Hartman2012-05-01
| | | | | | | | | | | | | | | | | | | | | | | | We should always reference the input device for dev_err(), not the USB device. Fix up the places where I got this wrong. Reported-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: wacom_sys.c: remove err() usageGreg Kroah-Hartman2012-04-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | err() was a very old USB-specific macro that I thought had gone away. This patch removes it from being used in the driver and uses dev_err() instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> CC: Ping Cheng <pingc@wacom.com> CC: Chris Bagwell <chris@cnpbagwell.com> CC: Eduard Hasenleithner <eduard@hasenleithner.at> CC: Jason Gerecke <killertofu@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: kbtab.c: remove err() usageGreg Kroah-Hartman2012-04-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | err() was a very old USB-specific macro that I thought had gone away. This patch removes it from being used in the driver and uses dev_err() instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: gtco.c: remove err() usageGreg Kroah-Hartman2012-04-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | err() was a very old USB-specific macro that I thought had gone away. This patch removes it from being used in the driver and uses dev_err() instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: aiptek.c: remove err() usageGreg Kroah-Hartman2012-04-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | err() was a very old USB-specific macro that I thought had gone away. This patch removes it from being used in the driver and uses dev_err() instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> CC: Jesper Juhl <jj@chaosbits.net> CC: JJ Ding <dgdunix@gmail.com> CC: Edwin van Vliet <edwin@cheatah.nl> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * | USB: acecad.c: remove err() usageGreg Kroah-Hartman2012-04-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | err() was a very old USB-specific macro that I thought had gone away. This patch removes it from being used in the driver and uses dev_err() instead. CC: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | | Input: wacom - TPC2FG doesn't store touch id for slotsPing Cheng2012-06-28
| | | | | | | | | | | | | | | | | | | | | Signed-off-by: Ping Cheng <pingc@wacom.com> Tested-by: Rafi Rubin <rafi@seas.upenn.edu> Reviewed-by: Jason Gerecke <killertofu@gmail.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
* | | Input: wacom - BTN_TOOL_DOUBLETAP is not a valid device_typePing Cheng2012-06-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | It is replaced by BTN_TOOL_FINGER. Signed-off-by: Ping Cheng <pingc@wacom.com> Tested-by: Rafi Rubin <rafi@seas.upenn.edu> Reviewed-by: Jason Gerecke <killertofu@gmail.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
* | | Input: wacom - remove code duplicationJason Gerecke2012-06-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | Replaces code to calculate Intuos5 physical dimensions with a call to an existing function that performs the same task. Signed-off-by: Jason Gerecke <killertofu@gmail.com> Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | | Input: wacom - initialize and destroy LEDs for Intuos4 S tabletsJason Gerecke2012-06-12
| | | | | | | | | | | | | | | | | | | | | | | | This case appears to have been missed in the original commit. Signed-off-by: Jason Gerecke <killertofu@gmail.com> Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | | Input: wacom - Bamboo One 1024 pressure fixChris Bagwell2012-06-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bamboo One's with ID of 0x6a and 0x6b were added with correct indication of 1024 pressure levels but the Graphire packet routine was only looking at 9 bits. Increased to 10 bits. This bug caused these devices to roll over to zero pressure at half way mark. The other devices using this routine only support 256 or 512 range and look to fix unused bits at zero. Signed-off-by: Chris Bagwell <chris@cnpbagwell.com> Reported-by: Tushant Mirchandani <tushantin@gmail.com> Reviewed-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | | Input: wacom - battery reporting improvementsChris Bagwell2012-06-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do not register battery device until connected to a tablet. This prevents an empty battery icon from being shown when tablet is connected using USB cable. Also, call power_supply_powers() for apps that can make use of that info. And stop ignoring input registration failures. Signed-off-by: Chris Bagwell <chris@cnpbagwell.com> Reviewed-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | | Input: wacom - add two new devices (0xed and 0xef)Ping Cheng2012-06-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | 0xed supports pen and one finger touch; 0xef is pen only. Signed-off-by: Ping Cheng <pingc@wacom.com> Acked-by: Chris Bagwell <chris@cnpbagwell.com> Reviewed-by: Jason Gerecke <killertofu@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | | Input: wacom - rearrange type enumPing Cheng2012-06-12
| |/ |/| | | | | | | | | | | | | | | So we can simplify a few type related if statements Signed-off-by: Ping Cheng <pingc@wacom.com> Acked-by: Chris Bagwell <chris@cnpbagwell.com> Reviewed-by: Jason Gerecke <killertofu@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | Input: wacom - use dev_xxx() instead of naked printk()s and dbg()sDmitry Torokhov2012-05-02
| | | | | | | | | | Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | Input: wacom - return proper error if usb_get_extra_descriptor() failsDmitry Torokhov2012-05-02
| | | | | | | | | | | | | | | | Instead of returning 1 (which is not even negative) let's capture and return error codde returned by usb_get_extra_descriptor(). Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | Input: wacom - fix sparse warningDmitry Torokhov2012-05-02
| | | | | | | | | | | | | | | | | | This fixes the following warning from sparse warning: Using plain integer as NULL pointer Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | Input: wacom - add 0xE5 (MT device) supportPing Cheng2012-04-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Main part of patch is adding support for a new Wacom MT touch packet and labels these devices using MTSCREEN type. Other items of interest: Delete some duplicate code in HID parsing for Y info since its already done in X path. In wacom_query_tablet_data(), only invoke the set report that requests tablets to send Wacom Touch packets for Finger interfaces. Mostly, this is to make code intent clear. Tested-by: Jason Gerecke <killertofu@gmail.com> Signed-off-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | Input: wacom - retrieve maximum number of touch pointsPing Cheng2012-04-29
| | | | | | | | | | | | | | | | | | From the HID usage table when it is supported. Tested-by: Jason Gerecke <killertofu@gmail.com> Signed-off-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | Input: aiptek - adjust error-handling code labelJulia Lawall2012-04-23
| | | | | | | | | | | | | | | | | | At the point of this error-handling code, aiptek->urb has been allocated, and it does not appear to be less necessary to free it here than in the error-handling code just below. Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | Merge commit 'v3.4-rc4' into nextDmitry Torokhov2012-04-21
|\ \ | |/
| * Input: wacom - check for allocation failure in probe()Dan Carpenter2012-03-29
| | | | | | | | | | | | | | | | | | We accidentally removed the check for NULL in 3aac0ef10b "Input: wacom - isolate input registration". Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
| * Merge branch 'next' into for-linusDmitry Torokhov2012-03-27
| |\ | | | | | | | | | | | | Conflicts: drivers/input/tablet/wacom_sys.c
| * \ Merge branch 'next' into for-linusDmitry Torokhov2012-03-19
| |\ \
| * | | Input: wacom - fix physical size calculation for 3rd-gen BambooJason Gerecke2012-03-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This calculation determines the physical dimensions of the tablet, used later on in calculate_touch_res to obtain the touch sensor resolution. Instead of dividing the logical size by the resolution, the current code performs a multiplication. This doesn't pose a problem for the 3rd-gen Bamboo since the resolution and scale factor happen to be identical, but will produce an incorrect result for other cases. Signed-off-by: Jason Gerecke <killertofu@gmail.com> Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
| * | | Input: wacom - fix 3rd-gen Bamboo MT when 4+ fingers are in useJason Gerecke2012-03-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The message count field uses three bits of storage, not two. Signed-off-by: Jason Gerecke <killertofu@gmail.com> Acked-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
| * | | Input: wacom - add missing LEDS_CLASS to KconfigChris Bagwell2012-02-24
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
* | | | Input: wacom - add Intuos5 multitouch sensor supportJason Gerecke2012-04-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Intuos5 tablets with PTH-* model numbers include a multitouch sensor which use the same touch reports as the 3rd-generation Bamboo. No useful information is in the HID descriptor for the touch interface so hardcoded values are used during setup. Signed-off-by: Jason Gerecke <killertofu@gmail.com> Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Reviewed-by: Ping Cheng <pingc@wacom.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>