Re: Re: [PATCH] Input: hanwang - add support for Art Master II tablet

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dmitry Torokhov,

On 2012-06-13 14:38:19,you wrote:
>
>Hi,
>
>On Mon, Jun 11, 2012 at 10:10:39PM +0800, weixing wrote:
>> this adds support for old hanwang Art master II tablet
>> 
>> Signed-off-by: weixing <weixing@xxxxxxxxxxxxxx>
>> ---
>>  drivers/input/tablet/hanwang.c |   63 ++++++++++++++++++++++++++++++++++++++-
>>  1 files changed, 61 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/input/tablet/hanwang.c b/drivers/input/tablet/hanwang.c
>> index b2db3cf..4154c1d 100644
>> --- a/drivers/input/tablet/hanwang.c
>> +++ b/drivers/input/tablet/hanwang.c
>> @@ -63,6 +63,7 @@ MODULE_LICENSE(DRIVER_LICENSE);
>>  enum hanwang_tablet_type {
>>  	HANWANG_ART_MASTER_III,
>>  	HANWANG_ART_MASTER_HD,
>> +	HANWANG_ART_MASTER_II,
>>  };
>>  
>>  struct hanwang {
>> @@ -99,6 +100,8 @@ static const struct hanwang_features features_array[] = {
>>  	  ART_MASTER_PKGLEN_MAX, 0x7f00, 0x4f60, 0x3f, 0x7f, 2048 },
>>  	{ 0x8401, "Hanwang Art Master HD 5012", HANWANG_ART_MASTER_HD,
>>  	  ART_MASTER_PKGLEN_MAX, 0x678e, 0x4150, 0x3f, 0x7f, 1024 },
>> +	{ 0x8503, "Hanwang Art Master II", HANWANG_ART_MASTER_II,
>> +	  ART_MASTER_PKGLEN_MAX, 0x27de, 0x1cfe, 0x3f, 0x7f, 1024 },
>>  };
>>  
>>  static const int hw_eventtypes[] = {
>> @@ -120,6 +123,55 @@ static const int hw_mscevents[] = {
>>  	MSC_SERIAL,
>>  };
>>  
>> +static void hanwang_parse_ArtmasterII_packet(struct hanwang *hanwang)
>
>Caps are disliked. Why don't you call it
>hanwang_parse_artmaster2_packet()?
>

Ok,I'll fix it.

>> +{
>> +	unsigned char *data = hanwang->data;
>> +	struct input_dev *input_dev = hanwang->dev;
>> +	struct usb_device *dev = hanwang->usbdev;
>> +	u16 x, y, p;
>> +
>> +	hanwang->current_tool = BTN_TOOL_PEN;
>> +
>i> +	switch (data[0]) {
>> +	case 0x02:	/* correct report id */
>> +		switch (data[1]) {
>> +		case 0x00:	/* pen leave */
>> +			hanwang->current_id = 0;
>> +			input_report_key(input_dev, hanwang->current_tool, 0);
>> +			break;
>> +		default:
>> +			hanwang->current_id = STYLUS_DEVICE_ID;
>> +			x = (data[2] << 8) | data[3];
>> +			y = (data[4] << 8) | data[5];
>> +			p = (data[7] >> 6) | (data[6] << 2);
>> +
>> +			input_report_key(input_dev, BTN_TOOL_PEN, 1);
>> +			input_report_abs(input_dev, ABS_X,
>> +						le16_to_cpup((__le16 *)&x));
>> +			input_report_abs(input_dev, ABS_Y,
>> +						le16_to_cpup((__le16 *)&y));
>> +			input_report_abs(input_dev, ABS_PRESSURE,
>> +						le16_to_cpup((__le16 *)&p));
>
>This does not make any sense. You first manually conver BE data to CPU
>format and then you do "le16_to_cpup((__le16 *)&x" for no reason...
>
>It looks what you need is:
>
>			input_report_abs(input_dev, ABS_X,
>					 be16_to_cpup((__be16 *)&data[2]);
>			input_report_abs(input_dev, ABS_Y,
>					 be16_to_cpup((__be16 *)&data[3]);
>			input_report_abs(input_dev, ABS_PRESSURE,
>					 (data[7] >> 6) | (data[6] << 2));
>
>I see that the original driver has the same issue.. My bad, we need to
>fix it as well.
>

Sorry,I'll fix it.A little formalism here,my bad.Really appreciate ur advice and comment. 

>> +			input_report_abs(input_dev, ABS_TILT_X, data[7] & 0x3f);
>> +			input_report_abs(input_dev, ABS_TILT_Y, data[8] & 0x7f);
>> +			input_report_key(input_dev, BTN_STYLUS2,
>> +						data[1] & 0x02);
>> +			break;
>> +		}
>> +
>> +		input_report_abs(input_dev, ABS_MISC, hanwang->current_id);
>> +		input_event(input_dev, EV_MSC, MSC_SERIAL,
>> +				hanwang->features->pid);
>
>Hmm, so the difference between ArtmasterII and others is that you it
>does not have BTN_STYLUS, only BTN_STYLUS2 (why, BTW? I'd expect if a
>device had only one button on a stylus it woudl report BTN_STYLUS, not
>BTN_STYLUS2); and it sends hanwang->features->pid instead of 0xffffffff
>in MSC_SERIAL. Does it have to be a separate fucntion that is 99% the
>same as the original one?
>
ok, i'll fix that.

>Thanks.
>
>-- 
>Dmitry
>--
>To unsubscribe from this list: send the line "unsubscribe linux-input" in
>the body of a message to majordomo@xxxxxxxxxxxxxxx
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



Thanks.

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux